例如:char a=1; char b=2;求a&b的值 a=1 既//0000 0001 b=2 既 //0000 0010 结果为 //0000 0000 则 a & b 的结果为0
特点 :相同为1,相异为0。
#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; }运算方式:按照所给数二进制位进行计算。既用对应位进行或运算,然后将结果转换成十进制结果输出
特点:一真则真。
#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; }特点:相同为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; }特点:两个操作数同时为真才为真。
#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; }特点:一真则真,两个操作数同时为假才为假。
#include<stdio.h> int main() { int a=1; int b=2; int c=a || b; //结果为真 /* 此时a为真,所以不会再计算 || 后面的语句,此表达式逻辑为真*/ printf("%d\n",c); return 0; }第一题:
#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; }思考:答案是什么?
第一题答案:
第二题答案: