c++ if else语句的简写

shorthand c++ if else statement

本文关键字:语句 if else c++      更新时间:2023-10-16

我很好奇是否有一个简短的语句:

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

我看到了if a <B等。>

我不确定如何正确地做这件事,希望能得到一些建议。

谢谢!

其实我是在你们回答之前才想出来的。

最短解为bigInt.sign = (number < 0) ? 0 : 1

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

(condition) ? (if_true) : (if_false)

对你来说是这样的:

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

try this:

bigInt.sign = number < 0 ? 0 : 1

是:

bigInt.sign = !(number < 0);

!运算符总是求值为truefalse。当转换为int时,它们分别成为10

当然这相当于:

bigInt.sign = (number >= 0);

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

根据您在代码中使用它的频率,您可以考虑如下:

宏观

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

内联函数

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

那你就直接写:

bigInt.sign = sign(number); 

你也可以试试这个:

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

如果我们需要分配01以外的值,则可以使用以下代码:

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