为什么是0;C++中的有效语句

why is 0; a valid statement in C++?

本文关键字:有效 语句 C++ 为什么      更新时间:2023-10-16
int main() {
int a;
2;
4;
a;

return 0;
}

为什么这段代码有效(即不会引发任何编译错误(?计算机在执行1;a;时会做什么?

0;4;这样的语句没有操作。

请注意,程序的行为是未定义的,因为a;是对未初始化变量a的读取。哎呀。

例如,0是一个有效的表达式(它是一个值为零的八进制文字int类型(。

语句可以是后面跟有分号的表达式

因此

0;

是一份法律声明。事实就是这样。当然,现在更改语言以禁止这样的事情可能会破坏现有的代码。在C的成长期,可能也没有太多的意愿拒绝这样的事情。任何合理的编译器都会优化出这样的语句。

(至少需要一条语句的地方是在switch块体中。;本身可能会对某些编译器发出警告,因此0;可能有其用途。(

它们是表达式语句,由后跟分号的表达式组成。许多语句(如a = 3;printf("Hello, World!");(也是表达式语句,编写这些语句是因为它们具有有用的副作用。

至于计算机的功能,我们可以检查编译器生成的程序集,并可以看到,当表达式没有副作用时,编译器能够(并且确实(优化语句。