【发布时间】:2016-11-01 21:56:29
【问题描述】:
int a,b;
a = 1 ? 1,2 : 3,4; // a = 2
b = 0 ? 1,2 : 3,4; // b = 3
逗号运算符总是返回逗号的右侧,但是如果我们对变量进行赋值,它会返回左侧,除非我们使用 () 的情况。 那么第一个表达式到底是如何给出 2 的。
我认为它是 a = 1,2 所以它应该是 1 但实际上是 a=2。
为什么?
【问题讨论】:
-
别这样。可能是编译器因为你写了那种代码而惩罚你。
-
我的大学教授向我们展示了这一点。我检查了编译器。 msvc, gcc 给出相同的结果
-
逗号运算符的家伙。它不是一个元组
-
b = 0 ? 1,2 : 3,4;===(b = 0 ? (1,2) : 3),4;.. 怎么样? -
@SouravGhosh 就是这样!我怎么看不到。谢谢!
标签: c++ c ternary-operator comma-operator