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如果我没有弄错的话应该是值.