简写c ++ if else语句

时间:2014-07-17 02:28:45

标签: c++ if-statement

所以我很好奇是否有一个简短的陈述:

if(number < 0 )
  bigInt.sign = 0;
else
  bigInt.sign = 1;

我看到所有这些简短的陈述,如果a&lt; b等。

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

谢谢!

我实际上只是在你们回答之前就知道了。

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

5 个答案:

答案 0 :(得分:37)

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

(condition) ? (if_true) : (if_false)

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

number < 0 ? bigInt.sign = 0 : bigInt.sign = 1;

答案 1 :(得分:18)

试试这个:

bigInt.sign = number < 0 ? 0 : 1

答案 2 :(得分:16)

是:

bigInt.sign = !(number < 0);

!运算符始终评估为truefalse。转换为int时,它们分别变为10

当然这相当于:

bigInt.sign = (number >= 0);

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

答案 3 :(得分:1)

根据您在代码中使用此频率的频率,您可以考虑以下事项:

<强>的宏

#define SIGN(x) ( (x) >= 0 )

内联功能

inline int sign(int x)
{
    return x >= 0;
}

然后你会去:

bigInt.sign = sign(number); 

答案 4 :(得分:0)

你也可以试试这个:

bigInt.sign = (number<0)*0 + (number>=0)*1;

如果我们需要分配除 0 和 1 以外的其他值,则可以使用以下代码:

 bigInt.sign = (number<0)*(replacement_of_0) + (number>=0)*(replacement_of_1);