int i=0; int j=0; if(++i>0 || ++j>0) { printf(“%d\n”,i); printf(“%d\n”,j); } //结果:1,0
短路规则:
||从左向右开始计算,一旦遇到一个条件为真则立即停止运算(后面的条件表达式不再进行计算),整个表达式为真;所有条件为假表达式才为假。
&&从左向右开始运算,一旦遇到某个条件为假立即停止运算(后面的条件表达式不再进行计算),整个表达式为假;所有条件为真时整个表达式才为真。
int g=0; int f() { return g++; //g++,先返回函数值0,再自增1. } if(f() && f()) { printf(“%d\n”,g); } printf(“%d\n”,g); //结果:1 printf(“%d\n”,!0); printf(“%d\n”,!1); printf(“%d\n”,!100); printf(“%d\n”,!-1000); //结果:1,0,0,0
C语言中逻辑运算符!只知道0,见到0就返回1,其它的值都返回0.
三目运算符(a?b:c)作为逻辑运算符的载体
规则:当a为真时,返回b的值,否则返回c的值。
int a=1; int b=2; int c=0; c=a<b?a:b; (a<b?a:b)=3; //error:类似于1=3 *(a<b?&a:&b)=3; //ok int* p=NULL; p=(a<b?&a:&b); *p=3;
专题二 符号的技巧---- 11.逻辑运算符的使用分析
最新推荐文章于 2022-10-26 22:52:13 发布