为什么是0;C++中的有效语句
why is 0; a valid statement in C++?
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!");
(也是表达式语句,编写这些语句是因为它们具有有用的副作用。
至于计算机的功能,我们可以检查编译器生成的程序集,并可以看到,当表达式没有副作用时,编译器能够(并且确实(优化语句。
相关文章:
- 为什么是0;C++中的有效语句
- 为什么别名声明不是有效的 init 语句(/simple-declaration)?
- 为什么在 C/C++ 中交织 switch/for/if 语句是有效的?
- 为什么这个复合语句作为用大括号和括号括起来的语句序列似乎不是有效的语句表达式
- C++ - 这个条件语句写得正确吗?还是有更有效的写法?
- 是什么使这个以'+'开头的字符串添加成为有效的语句?
- 有没有更有效的方法来替换这些多个 IF 语句?
- 我正在写一个非常简单的字母评分系统,if语句是最有效的吗?
- 循环try..catch ..确保输入有效或使用控制语句
- 如果没有'&&'语句有效?
- 发生错误后我可以使用ODBC语句吗(它有效吗)
- 在连接语句中访问Qt信号的"有效载荷"
- 选择在 Sqlite 数据库中有效,但插入和更新语句不起作用
- C++将向量传递给重载类——有些调用语句有效,有些则无效
- 使用函数指针剪切 if 语句会更有效
- C++ -- 如何使用开关语句和恒量获得有效的货币转换器
- 在同一if语句中检查nullptr和有效索引
- 用c++编写if-then-else语句的更有效方法
- 为什么我的第一个 if 语句有效,但我的 else if 语句在它之后不起作用
- 通过hash_map<字符串 fnPtr>调用函数指针是否比C++中的多个 if/else if/else 语句更有效或更好?