c语言的表达式是从左往右求值的,我们在面对&&(按位与)和||(按位或)我们要根据与还有或的特性在判断是否能够使句子能够运行下去,就举个简单的例子
if(month == 12 || month==1 || month == 2)
{ printf(" 冬季 \n"); }
这条语句之中我们先判断月份是不是12月份如果是12月份那么后面就不用看了肯定就能够运行下去就输出冬季。
那么我们换按位与的话
if(month >= 3 && month <= 5)
{ printf(" 春季 \n"); }
我们先判断这个月份是不是大于3的如果大于3?ok在看下一个边界是不是小于5.只有都满足才会输出春季
我们下面做一个题
#include <stdio.h>
int main()
{
int i = 0,a=0,b=2,c =3,d=4;
i = a++ && ++b && d++;
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
}
是
i = a++ && ++b && d++;
这个是按位与的操作符,a++是1,1的话就已经不满足就接着后面依旧输出原样,而a已经输出1了那么结果就是
那我们换成按位与的话
#include <stdio.h>
int main()
{
int i = 0,a=0,b=2,c =3,d=4;
i = a++||++b||d++;
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
}
先看a a运算后是1,往后 b运算就是3,d运算是5
所以输出结果如下图。