C++ 关于括号、布尔逻辑和'\n';
我发现(true&&false)给出0,而true&&false(不带括号)给出1。 这个问题可能很愚蠢,因为我刚开始学习C++,但我在任何地方都找不到答案 我运行了以下命令:C++ 关于括号、布尔逻辑和'\n';,c++,boolean-logic,C++,Boolean Logic,我发现(true&&false)给出0,而true&&false(不带括号)给出1。 这个问题可能很愚蠢,因为我刚开始学习C++,但我在任何地方都找不到答案 我运行了以下命令: cout << (true && false) << '\n'; cout << true && false << '\n'; cout << (true && false == true); coutcout如
cout << (true && false) << '\n';
cout << true && false << '\n';
cout << (true && false == true);
coutcout如图a所示,&&
的优先级低于括号仅在周围运算符的上下文中更改语义。您忽略了这些(我说的是运算符,运算符优先级第二行是:(事实上,我能看到人们谈论a&b&c
和a&b&c
之间的区别吗?但直到现在我才意识到@drescherjm仍然是完全准确的。就我个人而言,这对我来说比abelenky的答案更有意义。@TedLyngmo我看不出有什么办法,对吗,我是这样的专注于cout
0
10
(cout << true) && (false << '\n') ==
(cout << true) && (false << 10) == // right side: 0 << 10
(cout << true) && 0 => // true is sent out here
bool(cout) && 0 =>
true && 0
false
(cout << true) && (false << '\n');
(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
cout << (true && false) << '\n';
(cout << true) && (false << '\n');
cout << (true && (false == true));