与 的语法错误?C++ 中的运算符

Syntax error with ? operator in c++

本文关键字:运算符 C++ 错误 语法      更新时间:2023-10-16

我正在使用 ? 运算符,我想表达以下内容

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

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

我喜欢在 ? 运算符中简洁

地编写代码

如果我们计算字符,if (a > b) max = a;更简洁。这是一个可怕的指标。

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

如果你想要副作用,不要让三元运算符参与进来。

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

三元运算符来了。 它是形式

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

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

因此,做你想做的事的一种方法是:

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

0 是相同类型的 r 值,所以没问题。

但是,请注意,这是一种可怕的代码编写方式。 它的可读性不是很强。

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

  if (a>b) max=a;

这被称为三元运算符,就目前而言,实际上没有一种干净的方法可以将其留空。有一个解决方法,如下所示:

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

但这真的不是太有效。最简单的方法是如@ta-speot-is所述,并使用缩写的条件语句而不是三元运算符