为什么这个C++代码会编译?

MLi*_*kin 2 c++ compiler-construction

有人可以向我解释为什么以下代码编译?它被编译器忽略了吗?

#include <stdio.h>
int main() {
    1234;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Pup*_*ppy 8

标准要求实施者允许陈述,即使没有明显效果.这主要是因为通过宏和模板的魔力,它们出人意料地容易出人意料.

  • @hhafez:实际上,根据C++的理念,更多的是没有理由*禁止*这样的陈述. (3认同)

Lig*_*ica 5

这段代码没有错.这完全合法.它没有做任何事情,但它完全合法.您的编译器 - 使用正确的警告设置 - 可能会警告您它完全没用,但它完全符合要求.

  • 6.2.1在C++ 2003中:"表达式语句的形式为`expression-statement:expressionopt;`表达式被计算,其值被丢弃." 请删除downvote. (3认同)