逻辑运算符使用分析
逻辑运算符&&,||和!的使用技巧。
程序中的短路:
短路规则:
||从左边开始计算,当遇到为真的条件时停止计算,整个表达式为真,所有
条件为假时表达式才为假。
&&从左向右开始计算,当遇到为假的条件时停止计算,整个表达式为假;所有条件
为真时表达式才为真。
"!"到底是什么: c语言中的逻辑符"!"只认得0,只知道0返回1.因此当其作用的值不是0时,其结果为0;
三目运算符(a?b:c)可以作为逻辑运算符的载体。
规则:当a的值为真时,返回b的值;否则返回c的值。
位运算符分析
在c语言中的位运算符:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
1<<2 => 001 =>100 =4
2<-
8>>3 => 01000 =>00001 = 1
->3
-1>>3
~8= ~1000= 0111=7
左移和右移注意点:
左移运算符<<将运算数的二进制位左移
规则:高位丢弃,低位补0
右移运算符>>把运算数的二进制位右移
规则:高位补符号位,低位丢弃
0x1<<2+3 => 0x1<<5
放错准则:
避免位运算符,逻辑运算符和数学运算符同时出现在一个表达式中
逻辑运算符&&,||和!的使用技巧。
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
if(++i>0 || ++j>0)
{
printf("%d\n",i);
printf("%d\n",j);
}
return 0;
}
程序中的短路:
短路规则:
||从左边开始计算,当遇到为真的条件时停止计算,整个表达式为真,所有
条件为假时表达式才为假。
&&从左向右开始计算,当遇到为假的条件时停止计算,整个表达式为假;所有条件
为真时表达式才为真。
#include <stdio.h>
int g = 0;
int f()
{
return g++;
}
int main()
{
if(f() && f())
{
printf("%d\n",g);
}
printf("%d\n",g);
return 0;
}
"!"到底是什么: c语言中的逻辑符"!"只认得0,只知道0返回1.因此当其作用的值不是0时,其结果为0;
三目运算符(a?b:c)可以作为逻辑运算符的载体。
规则:当a的值为真时,返回b的值;否则返回c的值。
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
int c = 0;
c = a < b ? a : b;
(a < b ? a : b) = 3;
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
return 0;
}
位运算符分析
在c语言中的位运算符:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
1<<2 => 001 =>100 =4
2<-
8>>3 => 01000 =>00001 = 1
->3
-1>>3
~8= ~1000= 0111=7
左移和右移注意点:
左移运算符<<将运算数的二进制位左移
规则:高位丢弃,低位补0
右移运算符>>把运算数的二进制位右移
规则:高位补符号位,低位丢弃
0x1<<2+3 => 0x1<<5
放错准则:
避免位运算符,逻辑运算符和数学运算符同时出现在一个表达式中