2

假设我有一个标准,如果该标准为真,我想添加一个增量,如果它为假,则执行相反的操作(减去)。

bool bBoolean;
int iDelta;
int iQuantity;

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

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

4 回答 4

10

我能想到的最短的事情是:

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

编辑:这通常称为三元语句,尽管它的专有名称(在标准中称为)是“条件表达式”或“条件运算符”。

(感谢 Rune 提供正式名称。)

于 2012-04-27T07:23:07.083 回答
1

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

int sign = criteria ? -1 : 1;
quantity += (delta * sign);
于 2012-04-27T07:32:05.867 回答
1

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

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

于 2012-04-27T22:31:14.503 回答
-3

为什么不:

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

对我来说,当我编写或阅读代码时,我更喜欢尽可能直截了当的东西。这表示代码将始终更新iQuantity,并且如果iBoolean为真,则更新将被反转。

编辑:更新不修改iDelta.

于 2012-04-27T07:43:45.893 回答