所以我很好奇是否有一个简短的陈述:
if(number < 0 )
bigInt.sign = 0;
else
bigInt.sign = 1;
我看到所有这些简短的陈述,如果a&lt; b等。
我不确定如何正确地做到这一点,并希望得到一些意见。
谢谢!
我实际上只是在你们回答之前就知道了。
我正在使用bigInt.sign = (number < 0) ? 1 : 0
答案 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);
!
运算符始终评估为true
或false
。转换为int
时,它们分别变为1
和0
。
当然这相当于:
bigInt.sign = (number >= 0);
这里的括号是多余的,但为了清楚起见,我添加了它们。所有比较和关系运算符都评估为true
或false
。
答案 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);