奇数变量赋值

时间:2013-10-01 08:53:07

标签: c++ syntax variable-assignment

美好的一天,每个人。

我今天遇到了一段特殊的代码,我不太明白。 我甚至不知道如何搜索这个特殊问题。

在这个有效的代码中,变量赋值完成如下:

if(condition) {
    Var1 = false, Var2 = false;
}

现在,我的印象是,所有命令都需要用分号而不是逗号来终止。我熟悉语法

Var1 = Var2 = false;

但不是上面发布的那个。编译器(g ++)甚至没有给我一个警告或任何东西......我是否遗漏了规范中的内容? 或者编译器对我很慷慨,只是在内部用,替换;?如果是这样,他不应该至少发出警告吗?

感谢您的时间。

3 个答案:

答案 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)

如果你想将多个陈述混在一起,那么对于那些必须阅读你代码的人来说,生活很困难。