#includeintmain(){printf("1&&2结果为%dn",1&&2);printf("0&&3结果为%dn",0&&3);printf("5&&0结果为%dn",5&&0);printf("0&&0结果为%dn",0&&0);return0;}
#includeintmain(){printf("1||2结果为%dn",1||2);printf("0||3结果为%dn",0||3);printf("5||0结果为%dn",5||0);printf("0||0结果为%dn",0||0);return0;}
#includeintmain(){printf("!2结果为%dn",!2);printf("!0结果为%dn",!0);return0;}
!!,将任何值转换为布尔值
例如,下面的代码片段中,将字符串转换为布尔值,并将其用于条件判断:
#includeintmain(){char*str="hello";intbool_value=!!str;if(bool_value){printf("strisnotnulln");}else{printf("strisnulln");}return0;}
由于hello是一个非空字符串,所以!!将其转换为1,if条件语句的条件将被认为是真,所以第一个printf语句将被执行。
反之,如果字符串“str”为NULL,则!!将其转换为0,if条件将被认为是假,第二个printf语句将被执行。
#includeintmain(){inta=!((6>3)&&(11-20)&&(0-1));intb=!((5+4)&&(7-8)&&(3<2));printf("a=%dn",a);printf("b=%dn",b);return0;}
第一个嵌套表达式分析
第二个嵌套表达式分析
#includeintmain(){inta=!(1||-1&&0);printf("a=%dn",a);return0;}
逻辑运算符的优先级顺序为∣∣<&&
有兴趣的小伙伴可以参考上面的代码来验证&&和!的优先级关系哦!