【发布时间】:2012-09-12 10:02:41
【问题描述】:
我的问题是关于 C 中的 sizeof 运算符。
sizeof('a'); 等于 4,因为它将 'a' 作为整数:97。
sizeof("a"); 等于 2:为什么? (int)("a") 也会给出一些垃圾值。为什么?
【问题讨论】:
-
char vs. integer vs. string :) "sizeof('a')" 恰好被提升为 "sizeof (int)"。我猜你已经知道为什么 "a\0" 是 "2" :) 我想你会明白为什么 (int)(SOME-STRING-ADDRESS) 会显示为 "垃圾" :)
-
我会认为 sizeof('a') == 1 [same as sizeof(char) == 1] and sizeof("a") == 4 [same as sizeof(char *) == 4]。很有趣。
-
@Johnny Mopp: Why are C character literals ints instead of chars?
-
@Jens Gustedt - 不是重复的。除了“sizeof(字符文字)”之外,OP还在询问另外两个(直接相关,完全相关!)的事情。恕我直言...