c ++中的&&与Java中的&&表现相同吗?

vin*_*e88 3 c++ java logical-operators

我的问题基本上在标题中.基本上我已经了解到,在Java中,&&运算符就像一个短路,所以如果第一个条件的计算结果为false,它就不会查看语句的其余部分.我假设这是c ++中的情况,但我正在编写一些代码,首先检查索引是否未超过列表大小,然后将列表中的索引与另一个数字进行比较.就像是:

//let's say list.size()=4;

for(int i=0; i<10; i++)
{
   if(i < list.size() && list.get(i) == 5)
       //do something
   ...
}
Run Code Online (Sandbox Code Playgroud)

这不是确切的代码,但它说明了重点.我假设因为i>列表大小,后半部分将不会被评估.但似乎它仍然存在,我相信这会导致Seg Fault.我知道我可以使用嵌套的ifs但是这样的眼睛和浪费空间.有帮助吗?

Bla*_*ace 6

是的,在C和C++中是&&和|| 运营商短路.


Dev*_*ler 5

快捷方式在C,C++和Java中的工作方式相同.

但是,根据示例代码,如果list是,则可能会出现段错误null.C++没有Java的NullPointerException.如果list可能为null,那么您也需要测试它.

更新 后半部分仅适用于list是指针的情况.(这似乎不是.)如果是这种情况,它看起来像:

if (list && i < list->size() && list->get(i) == 5)
Run Code Online (Sandbox Code Playgroud)