美好的一天,每个人。
我今天遇到了一段特殊的代码,我不太明白。 我甚至不知道如何搜索这个特殊问题。
在这个有效的代码中,变量赋值完成如下:
if(condition) {
Var1 = false, Var2 = false;
}
现在,我的印象是,所有命令都需要用分号而不是逗号来终止。我熟悉语法
Var1 = Var2 = false;
但不是上面发布的那个。编译器(g ++)甚至没有给我一个警告或任何东西......我是否遗漏了规范中的内容?
或者编译器对我很慷慨,只是在内部用,
替换;
?如果是这样,他不应该至少发出警告吗?
感谢您的时间。
答案 0 :(得分:1)
在C和C ++编程语言中,逗号运算符(由标记表示)是一个二元运算符,它计算第一个操作数并丢弃结果,然后计算第二个操作数并返回该值(和类型)。 (read more)
答案 1 :(得分:1)
正如亚历山德鲁·巴巴罗西所指出的那样,对于 https://stackoverflow.com/questions/1613230/uses-of-c-comma-operator
所发生的事情有充分的解释。快速总结一下这篇文章中的任何一个人:在for循环和东西之外使用时,,
实际上与;
具有相同的效果。
有关详细信息,请访问该链接。
答案 2 :(得分:1)
我是否遗漏了规范中的内容?
是的,它是“逗号运算符”,由C ++ 11 5.18指定。它评估左侧的子表达式,然后是右侧的子表达式,整体结果是右侧的表达式。
在这种情况下,它相当于由;
它在像if/while/for
这样的地方非常有用,你只允许一个表达式,但可能想做多件事:
while (++i, --j != 0)
如果你想将多个陈述混在一起,那么对于那些必须阅读你代码的人来说,生活很困难。