【发布时间】:2018-06-20 13:28:29
【问题描述】:
为什么
int main()
{
int i = 0;
++++i;
}
有效的 C++ 但无效的 C?
【问题讨论】:
-
为什么不同的语言应该表现相同?
-
这是个好问题,只是措辞不当。为什么 Stroustrup 决定让预增量运算符在 C++ 中产生左值,而它在 C 中没有产生左值?我似乎记得在这个网站的某个地方看到过答案,但我不记得是什么了。
-
我也知道C和C++是不同的语言,但是目前的C++标准在[intro.scope]中还是说C++是基于C编程语言的通用编程语言我>。此外,C++ 标准库明确 包括 C 标准库(20.2 C 标准库 [library.c])。即使这个问题不太好,它的答案也涉及理解什么是左值。真的很可惜,比任何关于细微差异的问题都受到如此激烈的战争。
-
事实上,我认为这个问题没有任何问题。来自 C 编译器的编译器消息会有所帮助,但仅此而已。代码本身在实际程序中可能没有意义,但这就是language-lawyer 标签的用途。
-
我在 meta 上打开了一个 discussion,关于这个问题的大量反对意见
标签: c++ c language-lawyer