if(1 == 2 || 4)
{
cout<<"True";
}
else
{
cout<<"False";
}
这是我如何阅读上述内容。如果1等于2或4,则打印为true。否则,打印错误。执行此操作时...打印为true。显然我在这里误解了一些东西。 1不等于2或4.这不会使它变错吗?
答案 0 :(得分:5)
再次阅读句子:
如果1等于2或4,则打印为true。
“2”和“4”都指“如果1等于[...]”。这意味着,句子只是
如果1等于2或 1等于 4,则打印为真。
这引导我们进入if
- 子句
if (1 == 2 || 1 == 4)
代替。
1 == 2 || 4
为真,因为(1 == 2) == false
与4 == true
进行OR运算,产生true(false或true = true)。
答案 1 :(得分:2)
这是我如何阅读上述内容。如果1等于2或4,则打印为true。否则,打印错误。执行此操作时...打印为true。显然我在这里误解了一些东西。 1不等于2或4.这不会使它变错吗?
不,1等于2或4. 4
为真(因为它不为零)。所以任何“或4”也是如此。因此,“1等于2 或4 ”是真的。
答案 2 :(得分:0)
这不是if语句如何在C ++中工作。如果你想知道某件事是否等于某件事或那件事,那就是
if (this == this_thing || this == another_thing)
你有什么
if(1 == 2 || 4)
获得评估为
if ((1 == 2) || 4)
if (false || true)
if (true)
所以if语句永远都是真的。
答案 3 :(得分:0)
它评估为true,因为如果你检查一个整数的布尔值(就像你用数字4做的那样),它将评估为true。就像上面提到的人一样,你必须把它分开。
答案 4 :(得分:0)
用你的短语
如果1等于2或4,则打印为真
你需要添加一对单词来获得正确的等效C ++短语
如果1等于2或等于 4,则打印为真
因此它将采用以下方式
if ( 1 == 2 or 1 == 4 )
{
cout << "True";
}
else
{
cout<<"False";
}
至于原始状况
1 == 2 || 4
然后编译器按照以下方式考虑(由于运算符的优先级):
( 1 == 2 ) || 4
根据C ++ Stanbdard
运算符==和!=都产生真或假,即结果 输入bool。
因此,1 == 2等于false
,那么你得到
false || 4
其中4不等于0转换为布尔true
,因此整个条件的计算结果为true