int main() {
int a;
2;
4;
a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么这段代码有效(即不引发任何编译错误)?计算机在执行1;或执行时做什么a;?
诸如0;, 之4;类的语句是无操作的。
请注意,您的程序的行为是未定义的,因为它a;是对未初始化变量的读取a。哎呀。
0例如,是一个有效的表达式(它是int一个值为零的八进制文字类型)。
和一个语句可以是一个表达随后分号。
因此
0;
Run Code Online (Sandbox Code Playgroud)
是法律声明。事实就是如此。当然,现在更改语言以禁止此类操作可能会破坏现有代码。在 C 语言的形成年代,可能也没有太大的兴趣来禁止这些事情。任何合理的编译器都会优化出这样的语句。
(您需要至少一个语句的地方是在switch块体中。;它本身可能会向某些编译器发出警告,因此0;可以使用它。)
| 归档时间: |
|
| 查看次数: |
306 次 |
| 最近记录: |