[英]Operator sizeof() in C
考虑一下该计划
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。 int
char[2]
,字符3是null终止符。 int
有了这些差异很容易解释:
int
需要4个char
的空间S来保存它 char[2]
自然只需要2个char
引用K&R,
每个编译器都可以自由选择适合自己硬件的大小,只受限于short和int至少为16位,long为至少32位,short不长于int,不超过long 。
sizeof()输出取决于您使用的编译器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.