写一个if then else类型语句的简洁方法

时间:2012-04-27 07:21:12

标签: c++ c

假设我有一个标准,如果该条件为真,我想添加一个增量,如果它是假,我想添加相反的(减去)。

bool bBoolean;
int iDelta;
int iQuantity;

是否有更简洁优雅的方式来编写这段代码?我的意思是不重复关键词iQuantity和iDelta。

if(bBoolean)
  iQuantity -= iDelta;
else 
  iQuantity += iDelta;

4 个答案:

答案 0 :(得分:10)

我能想到的最简单的事情是:

iQuantity += (bBoolean) ? -iDelta : iDelta;

编辑:这通常被称为三元语句,虽然它的正确名称(标准中所称的内容)是"条件表达式"或"条件运算符"。

(感谢Rune的官方名称。)

答案 1 :(得分:1)

这是三元运营商。一些人不赞成它的潜力不如if...else。我喜欢它,但要小心。

int sign = criteria ? -1 : 1;
quantity += (delta * sign);

答案 2 :(得分:0)

iQuantity += (1-2*bBoolean)*iDelta;

在某些处理器上,额外算法比分支更快。

答案 3 :(得分:-3)

为什么不:

int tmpDelta = iDelta;
if (iBoolean)
{
  tmpDelta = -tmpDelta;
}
iQuantity += tmpDelta;

对我而言,当我编写或阅读代码时,我更愿意拥有尽可能直接的东西。这表示代码将始终更新iQuantity,并且如果iBoolean为真,则会反转更新。

修改:已更新,不会修改iDelta