我正在阅读一本C编程书,我刚刚通过了一段陈述以下内容的段落:“字符常量,如'F',是整数,而不是字符,这解释了为什么sizeof'F'等于sizeof (INT)。”
但我不相信这一点,所以我决定测试自己和结果:
printf("%ld", sizeof('F')); //output 4;
但如果我们这样做:
char a = 'F';
printf("%ld", sizeof(a)); //output 1;
所以我的问题是,引擎盖下发生了什么?为什么'F'被编译器作为int处理,而它可以帮助作为char处理,占用更少的内存?
我有一个猜测,因为'F'是一个常量并且通常存储在一个寄存器中,处理它有一个char | int或long是无关紧要的...有人可以确认我的假设或解释我为什么这样做会发生什么?