算术C++运算符

Joh*_*rts 10 c++ arithmetic-expressions

我在技术访谈中刚问了一个问题,我有点困惑.

问题如下:

如果

int i = -1, int j = -1, and int k = -1, 
Run Code Online (Sandbox Code Playgroud)

我们运行以下行:

++i && ++j && ++k
Run Code Online (Sandbox Code Playgroud)

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

Luc*_*ore 20

这里的关键是&&短路.

所以,++i首先评估.它递增i并返回新值,0这样就不会对表达式的其余部分进行求值.

0, -1, -1如果我没有弄错的话应该是值.

  • @JohnRoberts好......这会打败面试的目的,不是吗?:P (7认同)
  • 这是一个糟糕的面试问题.而且那段代码也很差. (5认同)
  • @Andreas如果你把"C/C++专家"放在你的简历中,你显然不是.:d (4认同)