简写 c if else 语句

新手上路,请多包涵

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

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

我看到了所有这些关于 if a < b 等的简短陈述。

我不确定如何正确地做到这一点,并希望对此有所了解。

谢谢!

在你们回答之前,我实际上只是想通了。

最短的解决方案是 bigInt.sign = (number < 0) ? 0 : 1

原文由 kevorski 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 736
2 个回答

是的:

 bigInt.sign = !(number < 0);

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

当然这相当于:

 bigInt.sign = (number >= 0);

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

原文由 M.M 发布,翻译遵循 CC BY-SA 3.0 许可协议

你也可以试试这个:

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

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

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

原文由 UNREAL 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题