C语言的逻辑运算和按位运算怎么区分?
1、作用的不同
&&、||是逻辑运算符,用于从左到右求表达式的真值。假设x=1;y=2;那么x&&y=1;x||y=1。
&、|是位运算符,是对x,y进行位运算,x,y取值如上,那么有x&y=0;(x的二进制表示为00,y的二进制表示为10)。
2、判断这个表达式的真或假的不同
&和|既是逻辑运算符也是位运算符,而&&和||只是逻辑运算符。
当&与&&同为逻辑运算符时,它们都用于连接两个Boolean类型的表达式,当&和&&的两端表达式同时为真时,表达式的结果为真,只要有一端为假,那么表达式结果为假。
例:3>5&3>2;3>5&&3>2;
当|和||的两端表达式同时为假时,表达式的结果为假,只要有一端为真,那么表达式结果为真。
3、计算方式不同
当使用&运算符:计算机在判断表达式的值的时候,先判断3>5的值为假,然后再判断3>2的结果为真,于是最后的结果是假&真为假;
但是当我们使用&&运算符的时候:计算机先判断3>5的值为假,此时表达式的结果一定为假,所以计算机就不再往下判断了,判定表达式结果为假。
逻辑或:|| 按位或:|
逻辑运算是指表达式返回值的运算,这里的值只有真与假;按位运算是指数值转换为二进制后的位运算,每位是0或1
真 逻辑与 真 结果为真
真 逻辑与 假 结果为假
1 按位与 1 结果为1
1 按位与 0 结果为0
可以按照符号的不同来区分,C语言中逻辑运算符和按位运算符的符号是不一样的
C语言中提供了三种逻辑运算符:&&(与运算), ||(或运算), !(非运算)
与运算符(&&)和或运算符(||)均为双目运算符。具有左结合性。非运算符(!)为单目运算符,具有右结合性
C语言提供了六种位运算符:
& | ^ ~ << >>按位与 按位或 按位异或 取反 左移 右移
按位运算,就是操作0和1