考虑一下该计划
main()
{
printf("%d %d %d",sizeof('3'),sizeof("3"),sizeof(3));
}
Run Code Online (Sandbox Code Playgroud)
gcc编译器的输出是:
4 2 4
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
Ama*_*9MF 13
假设您在32位系统上运行:
sizeof一个字符文字'3'是4,因为字符文字是C语言中的整数(但不是C++).
sizeof"3"是2,因为它是一个长度为2的数组文字(数字3加上NULL终结符).
sizeof literal 3是4,因为它是一个int.
fre*_*ace 12
要记住以下几点:
sizeof它不是一个功能,它是一个操作员.它以单位为单位返回类型的大小sizeof char.换句话说sizeof char总是1.intchar[2],字符3则是null终止符.int有了这些差异很容易解释:
int需要4 char秒的空间来容纳它char[2]自然只需要2 char秒