C语言 逻辑或优化和逻辑与优化
逻辑运算的优化是指在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下—个逻辑运算符才能求出表达式的解时,才执行该运算符。
【例题】逻辑与优化举例
程序如下:
#include <stdio.h>
main()
{
int x,y,a;
x=y=z=0;
a=x++&& y++;
printf("a=%d,x=%d,y=%d\n",a,x,y);
}
程序执行后,a、x、y的值分别是多少?
“与”运算只有当两个操作数为真,结果才为真。本题中,第一个操作数为x++,先将x的值取出参与“&&”运算,之后x的值自增1。取出x的值为0,所以无论第二个操作数是0还是1都不能影响整个表达式的值,那么此时就会出现逻辑与运算的优化:不把所有的操作数全部计算出来,因为第一个操作数的值已经可以决定整个表达式的值,所以,后面的操作数“y++”不再执行,因此y的值不会改变。
最后输出结果为:
a=0,x=1,y=0
【例题】逻辑或优化举例
程序如下:
#include <stdio.h>
main ()
{
int x,y,a;
x=y=a=0;
a=x--||y--;
printf ("a=%d ,x=%d,y=%d\n",a,x,y);
}
“或”运算只要有一个操作数为真,结果就为真。本题中,第一个操作数为X--,先将X的值取出参与“&&”运算,之后x的值自减1。取出x的值为1,所以无论第二个操作数是0还是1都不能影响表达式的值,那么此时就会出现逻辑或的优化:第一个操作数的值已经为1,能决定整个表达式的值,所以后面操作数“y--”不再执行。
最后输出结果为:
a=1,x=0,y=1
点击加载更多评论>>