怎么我算的和程序运行出来的不一样,哪里错了?
做我_女朋友 圈内达人 2016-02-11 16:27:13
2517 5 0

1212121.jpg






#include <stdio.h>

main()

{

int a=1,b=0,c,d;

c=(a++>0)||(--b>0);

d=(--b>0)||(a++<0);

printf("%d","%d","%d","%d",a,b,c,d);

}


问题来自: 逻辑短路

共 5 个回答

    做我_女朋友 圈内达人 3006天前

    补充:13123123.jpg

    风筝 知名达人 3006天前

    3,-1,1,0

    风筝 知名达人 3006天前

    应该输出一横行

    匿名课官 资深达人 3006天前

    #include <stdio.h>

    main()

    {

    int a=1,b=0,c,d;

    c=(a++>0)||(--b>0);

    d=(--b>0)||(a++<0);

    printf("%d,%d,%d,%d",a,b,c,d);

    }


    最佳答案

    嘿嘿大人 一代宗师 3006天前

    逻辑短路的情况在或运算里的提现就是只要第一个表达式为真就不会执行第二个表达式,所以因为a++大于0为真,所以c为1而执行完a++大于零后a的值为2,--b先自减b变为-1,而负一小于0第一个表达式为假,所以要执行第二个表达式,而a++小于零很明显也为假,所以d为假也就是零,而执行完a++ 小于零以后a的值变为了3,所以abcd分别为3,-1,1,0

您还没有登录,所以不能回复该问题
我要回复

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

相关问题