【发布时间】:2011-04-21 10:00:59
【问题描述】:
我的问题基本上就在标题中。基本上我已经了解到,在 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
...
}
这不是确切的代码,但它说明了这一点。我假设由于 i > 列表大小,后半部分不会被评估。但它似乎仍然存在,我相信这会导致 Seg Fault。我知道我可以使用嵌套的 if,但这太碍眼而且浪费空间。有什么帮助吗?
【问题讨论】:
-
我不确定这对于 Java 或 C++ 是否完全正确。根据我的经验,单个 if 条件中的所有条件都会被评估。
-
感谢大家的回答。我不知道还有什么问题。我要继续用头撞桌子……
-
@Brian:我不得不假设你没有任何 Java 或 C++ 经验。
-
@Brian:作为提醒,这在 C# 中也适用:-P。
-
@Brian:好吧,我只能说,作为一个单独的问题发布了该行为的可运行示例,因为它似乎与
&&:msdn.microsoft.com/en-us/library/2a723cdk(VS.71).aspx 的文档相悖。我没有方便的 C# 环境,但我猜你在歪曲一些东西。你确定你没有尝试||?
标签: java c++ logical-operators