C语言中的短路现象 |
您所在的位置:网站首页 › bohr效应是指什么的现象 › C语言中的短路现象 |
C语言短路现象讲解
- 短路现象 1 表达式1 && 表达式2 && 表达式3; 分析: 只有当表达式1为真(非0)时才需要判断表达式2的值;只有表达式1和2都为真(非零)时;才需要判断表达式3的值。当表达式1为假(0),则发生短路,不执行表达式2和3,整个表达式值为0! 例如: #include"stdio.h" main() { int a,b,c,d; a = 0; b = 1; c = 2; d = a++ && b++ && (++c); printf("a=%d b=%d c=%d d=%d\n",a,b,c,d); }输出结果: > a=1 b=1 c=2 d=0- 短路现象 2 表达式1 || 表达式2 || 表达式3; 分析: 只有表达式1为假(0)时才需要判断表达式2的值;只有表达式1和2都为假(0)时,才需要判断表达式3的值。当表达式1为真(非0),则发生短路,不执行表达式2和3,整个表达式值为1! 例如: #include"stdio.h" main() { int a,b,c,d; a = 0; b = 1; c = 2; d = a++ || b++ || (--c); printf("a=%d b=%d c=%d d=%d\n",a,b,c,d); }输出结果: > a=1 b=2 c=2 d=1很多初学者会不明白上面例题中,单目运算符"++“的优先级要高于双目运算符,为什么程序却不会先执行”++"呢?其实这个就是表达式的计算顺序和运算符优先级的区别,在这里我来给大家讲解一下其中的问题~ 运算符的优先级:只是规定操作数的结合方式,但并未说明操作数的计算顺序。 例如:a+b+c; 运算符的优先级只能限制该运算符两端的操作对象,优先级高的可以先选择它的操作数,本题中"+“为双目运算符,结合方向自左向右依次结合,所以第一个”+"优先决定它的操作数,所以该表达式等价于(a+b)+c,并不等价于a+(b+c) 操作数的计算顺序:表达式的计算顺序是未知的,是由代码决定的。在C语言中只有4个运算符被规定了操作数的计算次序:&&,||,逗号运算符(,),条件运算符( ? : ) 例如:a&&b&&c; 与运算符的计算顺序自左向右依次判断,但注意 当表达式a为假(0),则发生短路,不执行表达式b和c,整个表达式值为0 综上所述:优先级的高低只能限制运算符的操作对象,但是表达式的计算顺序仍然取决于代码本身。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |