位置:首页 > 软件操作教程 > 编程开发 > C语言 > 问题详情

C语言 逻辑或优化和逻辑与优化

提问人:刘团圆发布时间:2020-11-28

逻辑运算的优化是指在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下—个逻辑运算符才能求出表达式的解时,才执行该运算符。

【例题】逻辑与优化举例

程序如下:

#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


继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部