#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;
}
我以前在g++和gcc上跑的时候对这道题的输出有很多疑惑。
但我已经通过引用这些链接消除了几乎所有的疑虑:
关于这个问题的输出,我还需要了解一件事。
谁能解释一下程序中上面提到的 printf("%d\n",'ag');
的输出。它实际上是如何存储在内存中的?
程序在 Linux/GCC 平台上的输出是:
24935
97
1, 4, 4, 4
最佳答案
单引号文字的类型是int
。因此,大小通常足以容纳多个字符的位。据我所知,解释字符的确切方式取决于实现。
在您的例子中,您得到的是小端顺序:
'a'
的 ASCII 值为 97 (0x61)'g'
的 ASCII 值为 103 (0x67)
您的值为 24935 = 0x6167,因此您将在高字节中获得 'a'
,在低字节中获得 'g'
。
关于c - c中单引号中两个字符的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12212668/