C++ 算术C++;操作员
我刚刚在一次技术面试中被问到一个问题,我有点困惑 问题如下: 如果 我们运行以下行:C++ 算术C++;操作员,c++,arithmetic-expressions,C++,Arithmetic Expressions,我刚刚在一次技术面试中被问到一个问题,我有点困惑 问题如下: 如果 我们运行以下行: ++i && ++j && ++k i、j和k的新值是什么?我感到困惑的原因是,因为我们没有将这个表达式赋给任何东西,所以and运算符似乎不应该有任何区别(只有增量运算符应该有区别)。然而,运行一个简单的测试程序很快证明我错了。有人能给我解释一下吗,因为我以前从未见过这个练习。这里的关键是&&是短路 因此,++i首先被计算。它递增i并返回新值,即0,因此表达式的其余部分不会得到
++i && ++j && ++k
i、j和k的新值是什么?我感到困惑的原因是,因为我们没有将这个表达式赋给任何东西,所以and运算符似乎不应该有任何区别(只有增量运算符应该有区别)。然而,运行一个简单的测试程序很快证明我错了。有人能给我解释一下吗,因为我以前从未见过这个练习。这里的关键是
&&
是短路
因此,++i
首先被计算。它递增i
并返回新值,即0
,因此表达式的其余部分不会得到计算
如果我没有弄错的话,值应该是
0,-1,-1
。在这种情况下表达式++I
的值是0
,也就是说,如果为false,则不会计算和操作快捷方式以及后面的表达式。@JohnRoberts well。。。那会破坏采访的目的,不是吗P@LuchianGrigore:好的。。。不一定。逻辑运算中的“短路”是一个不太熟悉该语言的人可能不知道的细节。但一旦被告知,你就可以看到他的推理能力。这样问,看起来问题更多的是检查语法知识,而不是解决问题的能力。“这本身不是一件坏事,但至少它应该被宣布,而不是被发现。”埃米利奥加拉瓦格利亚哦,我同意。在我看来,这不是一个好的面试问题。正是这些类型的小吹毛求疵在评价一个人时一点用处都没有。我的观点是,我认为问这个问题就像问“你知道短路是什么吗?”,只是伪装成代码。这是一个糟糕的面试问题。这段代码也很糟糕。@Andread如果你在简历中写上“C/C++专家”,你显然不是D计数器问题:这取决于,什么类型的i
,j
和k
?面试官提到它们是整数,我只是在问题中忽略了这样做。我会修好的。
++i && ++j && ++k