【发布时间】:2012-11-12 12:04:18
【问题描述】:
std::ifstream file_1(argv[1]);
std::ifstream file_2(argv[2]);
...
std::string dummy_1;
std::string dummy_2;
...
while(std::getline(file_1, dummy_1) || std::getline(file_2, dummy_2)) // the problem
{
...
}
仅当左侧的文件到达末尾(返回 FALSE)并且它不会同时评估它们时,该条件的行为就像 OR 运算符正在评估右侧的选项。
我知道语句的评估与运算符本身或它自己的优先规则无关,但我的程序不应该像我想象的那样工作,同时评估两个语句?
【问题讨论】:
-
不,它应该首先评估 LHS,并且只有当 LHS 评估为假时才评估 RHS,如您所见。这称为“短路”评估。