Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 算术C++;操作员_C++_Arithmetic Expressions - Fatal编程技术网

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