简写c ++ if else语句

kev*_*ski 16 c++ if-statement

所以我很好奇是否有一个简短的声明:

if(number < 0 )
  bigInt.sign = 0;
else
  bigInt.sign = 1;
Run Code Online (Sandbox Code Playgroud)

如果a <b等,我会看到所有这些简短陈述.

我不确定如何正确地做到这一点,并希望得到一些意见.

谢谢!

我实际上只是在你们回答之前弄明白了.

我正在使用 bigInt.sign = (number < 0) ? 1 : 0

Bla*_*... 45

使用三元运算符的基本语法如下:

(condition) ? (if_true) : (if_false)
Run Code Online (Sandbox Code Playgroud)

对于你的情况,它是这样的:

number < 0 ? bigInt.sign = 0 : bigInt.sign = 1;
Run Code Online (Sandbox Code Playgroud)


小智 20

试试这个:

bigInt.sign = number < 0 ? 0 : 1
Run Code Online (Sandbox Code Playgroud)

  • 只是一个风格的选择,所以没有我的downvote,但恕我直言,这不是在这里使用条件运算符最干净的方式...`bigInt.sign = number <0?0:1`是更好的因素,并强调`?`用于在值之间进行选择而不是用于流量控制. (2认同)
  • 改变.感谢您的建议! (2认同)

M.M*_*M.M 16

是:

bigInt.sign = !(number < 0);
Run Code Online (Sandbox Code Playgroud)

!运营商始终计算为truefalse.当转换成int,这些成为10分别.

当然这相当于:

bigInt.sign = (number >= 0);
Run Code Online (Sandbox Code Playgroud)

这里的括号是多余的,但我为了清楚起见添加了它们.所有的比较和关系运算符都评估为truefalse.

  • @MattMcNabb,这是多余的,但演员表明你并没有意外地期望它存储在`bool`或任何愚蠢的东西中.为了清楚起见,我会冒险使用"bigInt"的文字类型.隐含的`bool`到`int`转换有点像一般的imo. (2认同)