#include<stdio.h>
int main()
{
char ch = 'A';
printf("%d\n",'ag');
printf("%d\n",'a');
printf("%d, %d, %d, %d", sizeof(ch), sizeof('a'), sizeof('Ag'), sizeof(3.14f));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在g ++和gcc上运行时,我曾经对这个问题的输出有很多怀疑.
但我通过引用这些链接已经清除了几乎所有的疑虑:
我仍然需要了解这个问题的输出.
有人可以printf("%d\n",'ag');在程序中解释上面提到的输出.它是如何实际存储在内存中的?
Linux/GCC平台上程序的输出是:
24935
97
1, 4, 4, 4
Run Code Online (Sandbox Code Playgroud)
单引号文字的类型是int.因此,大小通常足以容纳多个字符的位数.据我所知,字符被解释的确切方式依赖于实现.
在你的情况下,你得到一个小端序:
'a'97(0x61)'g'103(0x67)你的值是24935 = 0x6167,所以你得到的'a'是更高的字节和'g'更低的字节.