今天在看先看一个问题的时候,发现了有人问判断条件里为什么不用 & 和 | ?只记得以前学习C的时候,老师就说条件判断要用 || 和 && ,而不是 | 和&,也就一直这么用了。
我们知道逻辑与或是逻辑运算符,那么既然是运算符,那肯定是有运算结果的;而条件判断也是一种运算,只不过它的结果只有true和false,也就是对应1和0。既然逻辑运算结果包含0和1,那么某些情况下,逻辑与或也可用于条件判断,所以才会有此一问。再换句话说,条件与或其实就是只有0和1的逻辑与或运算,而且其实在电路层面条件判断就是用逻辑运算实现。写个栗子:
#include <iostream>
#include <iomanip>
using namespace std;
#define out(NUM) cout <<setw(NUM) <<setiosflags(ios::left)
int main()
{
int a, b;
bool tem1, tem2;
a = 1; b = 2;
tem1 = true; tem2 = false;
out(6) <<"a&b: " <<(a&b) <<endl;
out(6) <<"a&&b: " <<(a&&b) <<endl;
out(6) <<"a|b: " <<(a|b) <<endl;
out(6) <<"a||b: " <<(a||b) <<endl;
out(10) <<"tem1&tem2: " <<(tem1&tem2) <<endl;
out(10) <<"tem1&&tem2:" <<(tem1&&tem2) <<endl;
out(10) <<"tem1|tem2: " <<(tem1|tem2) <<endl;
out(10) <<"tem1||tem2:" <<(tem1||tem2) <<endl;
return 0;
}
结果如下:
总结:
1. 当只有bool类型时,逻辑与或和条件与或结果一致,可以使用逻辑与或进行条件判断
2. 上述情况可以,但没必要。条件与或是依次匹配的,很多时候不必把所有的结果都运算出来就可以判断结果了,比如 1 || XXX,还有 0 && XXX;如果是逻辑运算,那么它的判断条件是运算结果,则必须要计算出结果来,1 | X | X | X | X...,白白浪费计算力。
ps: 很简单,其实就是不想干活了,就跑来瞎写写。磕盐要加糖,我们都一样。