【发布时间】:2011-01-16 03:49:36
【问题描述】:
我试过了
printf("%d, %d\n", sizeof(char), sizeof('c'));
并得到 1, 4 作为输出。如果一个字符的大小是 1,为什么'c' 给我 4?我想这是因为它是一个整数。因此,当我执行char ch = 'c'; 时,是否会发生隐式转换,在将其分配给 char 变量时,从 4 字节值到 1 字节值?
【问题讨论】:
-
我相信这与自动整数提升有关,事实多于相信的人会发布事实答案
-
@Roger:他问的是 C 和 C++ sizeof('a') 之间的区别,而我问是否发生了转换?请参阅问题正文。我已经推断出 'a' 是 C 中的一个整数。
-
我要感谢“David Rodríguez - dribeas”指出我的答案中的链接不正确。我正在删除我的答案。 legends2k,在我看来,正确的答案应该是 Peter 或 Neil。
-
你得到了答案,但有一条评论:你不能用
"%d"打印size_t对象。由于sizeof产生size_t一个size_t对象,您应该使用"%zu"(C99) 打印它或将其转换为unsigned long并使用"%lu"(C89) 打印。