c语言 位操作符和逻辑操作符

位操作符

& 按位与
| 按位或
^ 按位异或

注:他们的操作数必须是整数。
& 两个整数比特位有假(0)就为假(0),只有全为真(1)就为真(1)
举个例子:老师叫两个学生来办公室,说张三与(&)李四过来,如果只一个人过去就不满足老师说的话(为假),必须两个人都过去(为真)。
| 两个整数比特位只要有真就为真,只有全为假(0)就为假(0)
举个例子:老师叫两个学生来办公室,说张三或(|)李四过来,如果只一个人过去就满足老师说的话(为真),只有两个人都不过去的话才(为假)。
^ 两个整数比特位相异为真相同为假( 从名字上来说就是两个比特位如果相异就用按位或处理)
例子:1101 1101
^ 0100 ^0000
1001 1101
按位异或操作符总结任何数与0异或操作结果就是本身

逻辑操作符

&& 逻辑与
|| 逻辑或

C语言中逻辑符号结果只有1或0
&& 逻辑与 两个表达式都为真时结果为真
举个例子:老师叫两个学生来办公室,说张三与(&&)李四过来,如果只一个人过去就不满足老师说的话(为假),必须两个人都过去(为真)。
|| 逻辑或 两个表达式只要有一个为真时结果为真
举个例子:老师叫两个学生来办公室,说张三或(||)李四过来,如果只一个人过去就满足老师说的话(为真),只有两个人都不过去的话才(为假)。
另外注意逻辑与&&遇到表达式为假直接出结果就不执行后面的操作了。
逻辑或遇到表达式为真直接出结果就不执行后面的操作了。

例子

    int main()
{
	int i = 0;
	int j = 0;
	a = 0, b = 1, c = 3;
	i = a++ && ++b && c++;
	printf("a=%d  b=%d  c=%d\n", a, b, c);//a++后置++先用在自增 所以第一个表达式为假 ,后面两个就不执行了  最后输出结果为1  1 3
	//j = a++ || ++b || c++;
	//printf("a=%d  b=%d  c=%d\n", a, b, c);//a++后置++先用在自增 所以第一个表达式为假,接着执行第二个表达式++b结果为真后面一个就不执行了 最后输出结果为1 2 3
	return 0;
}            

按位操作符和逻辑操作符的区别

按位与&和逻辑与&&
1&2运算 0001&0010——>0000 结果为0
1&&2运算 结果为1(真)
按位或|和逻辑或||
1|2运算 0001|0010———>0011 结果为3
1||2运算 结果为1(真)

发布了29 篇原创文章 · 获赞 8 · 访问量 2015

猜你喜欢

转载自blog.csdn.net/qq_44785014/article/details/102526463