cout 中的逻辑运算
Logical operations in cout
考虑:
int i = 56, j = 0;
int n = i&&j;
cout << i&&j;
cout << endl << n;
其输出将是:
56
0
我想要么是因为运算符优先级,要么是因为逻辑短路,但我似乎无法弄清楚是哪个,或者原因。
表达式 cout << i&&j
等效于 (cout << i) && j
。两个操作数都被计算并转换为 bool
。语句作为一个整体没有效果,但是子表达式cout << i
的计算当然具有通常的副作用,即将某些内容写入标准输出。
&&
运算符确实短路,只有当cout << i
计算为true
时才j
被评估。这种情况等效于 cout.good()
,通常是这种情况(除非您以某种方式设法关闭标准输出)。
如您所料,<<
运算符优先于 &&
。
因此,cout << i&&j
首先输出 i,然后将返回的流与 j 进行比较(两者都为真,因此返回值为 true,但此值被丢弃)。
有关运算符优先级的完整列表,请参阅此处。
相关文章:
- 使用C++中的模板和运算符重载执行矩阵运算
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- C++选择排序算法中的逻辑错误
- GCC本机矩阵运算库
- std::cout.imbue()多重调用
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 关于简单C++函数(is_palindrome)的逻辑的问题
- 将逻辑 OR 与 cout 运算符一起使用
- 提升有关逻辑运算的摩擦问题
- 在生成子序列时使用按位运算的逻辑是什么?
- C++随机数的逻辑运算结果
- 谁在Java或C++源代码中执行算术和逻辑运算
- 这个逻辑运算工作有什么问题?
- cout 中的逻辑运算
- 逻辑AND运算对流输出的作用
- 逻辑运算:我想使逻辑运算容易
- 这就是avx浮点位逻辑运算的原因
- C/ c++中对大文件二进制数据的逻辑运算