我是编程的新手,无法解决这个问题,并且无处不在我能想到的答案。当function1
从if (m != 0 || 1)
传递时,cin >> 1
function2
中的if语句似乎无法读取。这是我的代码,任何帮助将不胜感激。
#include <iostream>
void function1(int i);
int main() {
using namespace std;
int i;
function1(i);
return 0;
}
----------------------------------------------------------------------------
#include <iostream>
void function2();
void function1(int i) {
using namespace std;
if (i != 0 || 1 ) /* not working when the variable 'i' is passed from function2 */ {
cout << endl << "i != 0 || 1" << endl;
function2();
}
else if (i == 0 || 1) {
if (i == 0) {
cout << endl << "m == 0" << endl;
}
else if (i == 1) {
cout << endl << "m == 1" << endl;
}
}
}
----------------------------------------------------------------------------
#include <iostream>
void function1(int i);
void function2() {
using namespace std;
int i;
cout << endl << "type 0 or 1" << endl;
cin >> i; /* type 1 or 0 in here */
function1(i);
}
答案 0 :(得分:3)
尝试更改此内容:
if (i != 0 || 1 )
对此:
if (i != 0 || i != 1 )
答案 1 :(得分:3)
虽然user154248的答案(至少部分)是正确的,但您可能会对...原因感兴趣...
原因是operator!=
具有更高的优先级(即之前评估过)operator||
。所以你的if子句等同于if((i != 0) || 1)
。
此外,任何不等于0(null / 0)的值都将计算为true
,如果在表达式中使用期望布尔参数,则得到if((i != 0) || true)
。现在,i != 0
评估的内容,整体表达式x || true
将导致true
。
最后 - 我们回到了用户154248的回答......
但是,还有一个问题:i != 0 || i != 1
也总是评估为true:如果i等于0,i != 1
的计算结果为true,如果i等于1,i != 0
就会这样做。 ..
您实际需要的是i != 0 && i != 1
。