第一个条件下的变量赋值和第二个条件中使用相同的变量定义明确?

时间:2010-06-19 00:10:14

标签: visual-c++ c++-cli variable-assignment sequence-points

这个定义得很好吗?

Streamreader ^reader = gcnew Streamreader("test.txt");
String  ^line;

while ((line = reader->ReadLine()) != nullptr && line != "")
{
    //do stuff
}

我相信我在某处读到不保证在第二个条件之前执行赋值。可能是我错了或者这只适用于C.
谷歌没有帮助我,这就是我在这里问的原因:))

2 个答案:

答案 0 :(得分:4)

使用&&和||,保证在评估第二个条件之前评估第一个条件(包括赋值)。

按位&和|,另一方面,没有做出这样的保证。

答案 1 :(得分:1)

这里有一个相关的答案,有很多好的参考资料:Is short-circuiting logical operators mandated? And evaluation order?

如果你没有超载&&和||你会得到从左到右的短路评估。看看链接。