C果然是有点难啊!
MinGW编译,结果 4 1 1
直接调取的'a'是从默认的地方调取的,那么默认的地方在哪?当然是,你程序运行在哪,这个默认就从哪来。
恭喜你发现了一个来自系统底层的小彩蛋,可惜,没有奖励
至于为什么是4字节,我想这可以用字节对齐的说法来解释,映像中在远古级追求高效率高速率的应用开发中有特别强调字节对齐这一概念,似乎是字节对齐的情况对于提高高负载寻址的速率有正面影响,因为在32位系统中,内存寻址方式是32bit即4x8bit(CPU寄存器起决定性效果),我想此处汇编dalao已经擦好手掌准备找错打脸了,就不多废话了,简单来说,这就是个“为了更高速率牺牲一定的存储空间”的细节表现了
理论上来说,'a'是一个字节大小,实际上来说,'a'是97,97这个数值,可以存储在char,int,long,long long等等整形数值的空间中,所以直接sizeof('a')得到的结果是什么都不用奇怪,这取决于系统的设定(因为'a'是预设好的常量,而程序内的c是自行声明的char类型变量)