操作符 & , | , ^, &&, ||
1.位操作符:& , |, ^
(1).& —————— /* 按bit位与*/
- 运算方式:按照所给数二进制位进行计算。既对应位进行与运算,然后将结果转换成十进制结果输出
例如:int a=1; int b=2;求a&b的值
a=1 既//0000 0001
b=2 既 //0000 0010
结果为 //0000 0000
则 a & b 的结果为0
特点 :对应比特位均为1结果才为1。
#include<stdio.h>
int main()
{
int a=5; //0101
int b=6; //0110
int c=a & b; //0100---> 4
printf("%d\n",c);
return 0;
}
(2). | —————— /* 按位或*/
运算方式:按照所给数二进制位进行计算。既用对应位进行或运算,然后将结果转换成十进制结果输出
特点:一真则真。
#include<stdio.h>
int main()
{
int a=5; //0101
int b=6; //0110
int c=a | b; //0111---> 7
printf("%d\n",c);
return 0;
}
(3). ^ —————— /* 按位异或*/
特点:相同为0,相异为1;
#include<stdio.h>
int main()
{
int a=5; //0101
int b=6; //0110
int c=a ^ b; //0011---> 3
printf("%d\n",c);
return 0;
}
2.逻辑操作符:&& ,||
(1)&& —————— /* 逻辑与*/
特点:两个操作数同时为真才为真。
#include<stdio.h>
int main()
{
int a=0;
int b=1;
int c=2;
int d=a && b&&c; //结果为假
/* 此时a为假,不用再计算后面的表达式,此表达式逻辑为假*/
int e=b&&c;//为真
printf("%d\n",d);
printf("%d\n",e);
return 0;
}
(2) || —————— /* 逻辑或*/
特点:一真则真,两个操作数同时为假才为假。
#include<stdio.h>
int main()
{
int a=1;
int b=2;
int c=a || b; //结果为真
/* 此时a为真,所以不会再计算 || 后面的语句,此表达式逻辑为真*/
printf("%d\n",c);
return 0;
}
360笔试题
第一题:
#include<stdio.h>
int main()
{
int i=0,a=0,b=2,c=3,d=4;
i=a++ && ++b && d++; //此处的a还是0,原因是++为后置++,既该语句结束后才++;
/* 此时a为假,所以不会再计算 &&后面的语句,此表达式逻辑为假*/
printf(" a=%d\n b=%d\n c=%d\n d=%d\n i=%d\n",a,b,c,d,i);
return 0;
}
思考:答案是什么?
第二题:
#include<stdio.h>
int main()
{
int i=0,a=0,b=2,c=3,d=4;
i=a++ || ++b || d++;
/* 此时b为真,所以不会再计算 || 后面的语句,此表达式逻辑为真*/
printf(" a=%d\n b=%d\n c=%d\n d=%d\n i=%d\n",a,b,c,d,i);
return 0;
}
思考:答案是什么?
第一题答案:
第二题答案: