我发现(true && false)给出0,而true && false(没有括号)给出1。这个问题可能是愚蠢的,因为我刚开始学习C ++,但是我在任何地方都找不到答案。
我执行以下操作:
cout << (true && false) << '\n';
cout << true && false << '\n';
cout << (true && false == true);
Run Code Online (Sandbox Code Playgroud)
它给了我:
0
10
看到这个之后,我变得更加困惑:
(true && false)和之间true && false(没有括号)有什么区别?true && false给了我1,所以我以为true && false没有括号就是true。但是,(true && false == true)给我0。为什么?是不是因为0和1不一定指示false和true?'\n'第二行中的似乎不起作用。为什么?如运算符优先级表所示,<<优先级为7,&&优先级为14
结果,该表达式cout << true && false << '\n';可以重写为:
(cout << true) && (false << '\n');
Run Code Online (Sandbox Code Playgroud)
评估为:
(cout << true) // Output: "1"; Evaluates to an ostream-object.
(false << '\n') // No output; Evaluates to 0, the '\n' "disappears"
[ostream-object] && 0; // No output; Evaluates to 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |