语法错误? c ++中的运算符

时间:2013-01-31 04:21:52

标签: c++

我正在使用?运营商,我想表达以下

  (a > b) ? (max = a) : (); // basically i want expression after `:` to be null

如果我在:之后留下空括号,编译器会抱怨语法不正确。在:为空后离开表达式的正确语法是什么?

3 个答案:

答案 0 :(得分:7)

  

我喜欢简洁的代码吗?操作

如果我们计算字符数,那么

if (a > b) max = a;会更简洁。这是一个可怕的指标。

理想情况下,您的三元运算符不应引起副作用。隐藏三元运算符内的副作用会使代码更难以读取/调试/维护等。

如果您想要副作用,请不要让三元运算符参与其中。

如果您想使用三元运算符,请考虑max = (a > b) ? a : max

答案 1 :(得分:2)

在这里你Ternary operator。它的形式是

   <condition> ? <r-value1> : <r-value2>

如果条件为真,则返回r-value1。否则,它返回r-value2。

所以做你想做的事的一种方法是:

  (a > b) ? (max = a) : 0; 

0是相同类型的r值,所以没关系。

然而,请注意,这是编写代码的可怕的方式。它不太可读。

作为一项学习练习,没关系,但除此之外,正如大家所说,使用

  if (a>b) max=a;

答案 2 :(得分:0)

这被称为三元运算符,就其而言,实际上没有一种干净的方法可以将它留空。有一个工作看起来像这样:

(a > b)?max=a:max=max;

但这真的不太有效。接近它的最有效方法是提及@ ta-speot,并使用缩写条件语句而不是三元运算符