奇数变量赋值
Odd variable assignment
大家好。
我今天遇到了一段特殊的代码,我不太明白。我什至不知道如何搜索这个特定问题。
在此有效的代码中,变量赋值是按如下方式完成的:
if(condition) {
Var1 = false, Var2 = false;
}
现在,我的印象是,所有命令都需要用分号而不是逗号终止。我熟悉语法
Var1 = Var2 = false;
但不是上面发布的那个。编译器(g++)甚至没有给我一个警告或任何东西......我在这里的规范中遗漏了什么吗?还是编译器对我很慷慨,只是在内部用;
替换,
?如果是这样,他至少不应该发出警告吗?
谢谢你的时间。
我在这里的规范中遗漏了什么吗?
是的,它是 C++11 5.18 指定的"逗号运算符"。它计算左侧的子表达式,然后计算右侧的子表达式,总体结果是右侧的子表达式。
在这种情况下,它相当于两个用;
分隔的表达式语句
这在像if/while/for
这样只允许你使用一个表达式,但可能想要做不止一件事的地方很有用:
while (++i, --j != 0)
此外,如果您喜欢将多个语句塞在一起,以使必须阅读您的代码的人的生活变得困难。
在 C 和C++编程语言中,逗号运算符(由标记表示)是一个二元运算符,它计算其第一个操作数并丢弃结果,然后计算第二个操作数并返回此值(和类型)。(阅读更多)
正如Alexandru Barbarosie指出的那样,对 https://stackoverflow.com/questions/1613230/uses-of-c-comma-operator 发生的事情有相当彻底的解释
为偶然发现这篇文章的人快速总结一下:当在 for 循环和东西之外使用时,,
实际上具有与;
相同的效果。
欲了解更多信息,请访问链接。
相关文章:
- 为"adjacent"变量赋值时出现问题
- 非常量变量只读位置的赋值
- 变量在使用赋值语句赋值后恢复为以前的值
- 为什么我不能在返回 const 的布尔函数中为类成员变量赋值?C++
- 如何在 c++ 中正确声明/赋值变量的值
- 在未初始化的变量上使用复合赋值运算符(+=, ..)不是C++中的UB?
- c++问题:给一个变量赋值后,另一个变量发生了变化
- 如何在不使用赋值运算符的情况下为动态变量赋值?
- 为什么我不能为变量赋值函数?
- 可视化的c++变量赋值使代码正常工作
- 作为赋值(增加引用变量)C++的左操作数所需的左值
- 如何为结构类型变量赋值
- const变量是否可以在具有默认值的参数中赋值(作为可选参数)
- C++中重载复合赋值运算符不会更改变量
- 初始值设定项列表与构造函数赋值与变量定义
- 在结构的构造函数中使用类方法赋值变量
- 原子变量的多重赋值是原子操作吗?
- 在 If 语句 [C++] 中赋值变量
- 赋值变量时c++未处理异常访问冲突
- 使用reinterpret_cast赋值变量后可能的析构函数