我正在为我的C ++考试而努力,而我正在做一些过去的论文。然后我对这段代码理解任务进行了标记。我想知道,为什么在这个if语句中没有值变为4?
int found = 0, value = 5;
if (!found || --value == 0) {
cout << "danger";
}
cout << "value =" << value << endl;
答案 0 :(得分:8)
if (!found || --value == 0)
在逻辑OR运算中,如果满足第一个条件,则不会评估第二个条件。此处!found
为TRUE且不会执行--value
,因此将其值保留为5.
答案 1 :(得分:0)
因为如果满足第一个条件,则甚至不考虑第二个条件 评估。为了满足您的期望,请交换条件。
int found = 0, value = 5;
if ( --value == 0 || !found) {
cout << "danger";
}
cout << "value =" << value << endl;