C++ ANSI ISO IEC 14882 2003 附录 C.1(第 668 页):
变化:条件表达式、赋值表达式或逗号表达式的结果可能是 bean 左值
理由:C++ 是一种面向对象的语言,相对更强调左值。例如,函数可能返回左值。
对原始特征的影响:改变定义明确的特征的语义。一些隐式依赖左值到右值转换的 C 表达式会产生不同的结果。例如,
char arr[100];
sizeof(0, arr)
在 C++ 和 C 中产生sizeof(char*)
100.
...
我今天刚读到这篇文章,我记得几个月前我的一个朋友提出了一个问题,即编写一个函数,如果用 C++ 编译将返回 0,如果用 C 编译则返回 1。我解决了它利用了在 C 中结构位于外部范围内的事实。因此,考虑到这些新信息,我决定这将是上述问题的另一种解决方案,我在 Microsoft Visual Studio 2008 上尝试过,但无论它是编译为 C 还是 C++ 代码sizeof(0, arr)
总是产生 4。所以 2 个问题:
1.什么是ISO C?它是当前的 C 标准吗?它是唯一的吗(我听说 C 正在迅速发展) 2. 这是微软 C++ 的错误吗?
TIA
编辑:抱歉混淆了输出并对其进行了编辑: