算术C ++运算符

时间:2012-10-19 19:00:41

标签: c++ arithmetic-expressions

我刚在技术访谈中被问到一个问题,我有点困惑。

问题如下:

如果

int i = -1, int j = -1, and int k = -1, 

我们运行以下行:

++i && ++j && ++k

i,j和k的新值是什么?我感到困惑的原因是,因为我们没有将这个表达式赋值给任何东西,所以看起来并不像运算符应该有任何区别(只有增量运算符应该)。然而,运行一个简单的测试程序很快证明我错了。有人可以向我解释一下,因为我以前从未见过这个练习。

2 个答案:

答案 0 :(得分:20)

这里的关键是&&正在短路。

因此,首先评估++i。它递增i并返回新值0,因此表达式的其余部分不会被评估。

如果我没弄错的话,这些值应为0, -1, -1

答案 1 :(得分:2)

在这种情况下,表达式++i的值为0,也就是假,因此永远不会评估和操作快捷方式和后面的表达式。