C++中运算符 &和&&、|和|| 的详解及区别
C++中运算符&和&&、|和||的详解及区别
简介:
&&是逻辑与运算符,||是逻辑或运算符,都是逻辑运算符,两边只能是bool类型
&与|既可以进行逻辑运算,又可以进行位运算,两边既可以是bool类型,又可以是数值类型
区别:
if(A&&B)如果A为false,整个表达式就为false,不再计算B的值了。
if(A&B)如果A为false,整个表达式就为false,但还要计算B的值。
if(A&&B++)如果A为false,&&不会再计算后面的值
if(A&B++)如果A为false,&则会计算后面的值
&|为整型和bool类型预定义了两种运算规则
对于整型,&和|计算操作数的按位“与”;
对于bool操作数,&或|计算操作数的逻辑“与”、“或”;
也就是说对于bool类型&和&&、|和||的if判断结果是相同的。
对于整形数据&&只判断真假(0或非0),两边的数据必须都为真或任一方为假;
对于整形数据&两边的数据则进行按位与运算,并返回计算结果让if判断这个值
逻辑(AND):true&&false:false
按位(AND):10010110&11111111:10010110(二进制位)
例子:
//a&b与运算,会返回a和b中每个位(比特,即二进制)最小的值; value=1&1;//1 value=1&0;//0 value=0&1;//0 value=0&0;//0 value=3&3;//3二进制计算:11=11&11 value=3&2;//2二进制计算:10=11&10 value=2&3;//2二进制计算:10=10&11 value=5&6;//4二进制计算:100=101&110 value=213&73;//65 //a|b或运算,会返回a和b中每个位(比特,即二进制)最大的值; value=1|1;//1 value=1|0;//1 value=0|1;//1 value=0|0;//0 value=3|3;//3二进制计算:11=11|11 value=3|2;//3二进制计算:11=11|10 value=2|3;//3二进制计算:11=10|11 value=5|6;//7二进制计算:111=101|110 value=213|73;//221
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!