有一个非常简单的问题:“设 A 为真。用 C++ 编写代码,输出“Not A Or A””

问题描述 投票:0回答:1

我知道它是 1(正确)。

首先,我编写了如下代码:

`#include <iostream>
using namespace std;
int main(){
    bool a=1;
    cout <<  !a || a;
    return 0;
}

` 但是当我运行这段代码时,输出是 0(假)!

然后我这样加上括号:

`cout << (!a||a);`

我得到了正确的答案。但为什么?为什么括号里有不同的答案?

c++ boolean-expression brackets boolean-operations
1个回答
0
投票

因为

<<
优先级 高于
||
,所以
cout << !a || a
解析为
(cout << !a) || a
而不是
cout << (!a || a)

!a
a
1
时,输出的是
0
,然后忽略
a
,因为
||
短路并且不会将
cout
视为 false。

© www.soinside.com 2019 - 2024. All rights reserved.