C中的运算符sizeof()
考虑该计划
main() { printf("%d %d %d",sizeof('3'),sizeof("3"),sizeof(3)); }
gcc编译器的输出是:
4 2 4
为什么会这样?
假设您在32位系统上运行:
sizeof一个字符文字’3’是4,因为字符文字是C语言中的整数(但不是C ++)。
sizeof“3”是2,因为它是一个长度为2的数组文字(数字3加上NULL终结符)。
sizeof literal 3是4,因为它是一个int。
要记住以下几点:
-
sizeof
不是函数,它是一个运算符。 它以sizeof char
为单位返回类型的sizeof char
。 换句话说,sizeof char
总是1。 - ‘3’是一个
int
- “3”是
char[2]
,字符3是null终止符。 - 3是
int
有了这些差异很容易解释:
- 一个
int
需要4个空格来保存它 -
char[2]
自然只需要2个char
引用K&R,
每个编译器都可以自由选择适合自己硬件的大小,只受限于short和int至少为16位,long为至少32位,short不长于int,不超过long 。
sizeof()输出取决于您使用的编译器