【发布时间】:2018-01-19 22:16:24
【问题描述】:
C 和 C++ 中sizeof() 运算符的不同输出。
在 C 中:
int main()
{
printf("%zu\n", sizeof(1 == 1));
return 0;
}
输出:
4
在 C++ 中:
int main()
{
std::cout << sizeof(1 == 1) << std::endl;
return 0;
}
输出:
1
问题:
- 为什么输出不同?
-
sizeof是否独立于操作系统或编译器? - 是否依赖于语言?
【问题讨论】:
-
sizeof(bool)和sizeof(wchar_t)是实现定义的 -
为什么这个问题被否决了?
-
sizeof('a')也不同。 -
@lilezek 我没有投反对票,但可能是因为这个问题确实不是特别有用。毕竟,C 和 C++ 是不同的语言,自 C++ 诞生以来,它们就有细微的差别和不那么细微的差别。期望任意代码表现相同只是表明忽略了这个简单的事实。
-
@lilezek mmm..可能缺乏研究? google result 和 secnd hit??