C++ “(a++,b>a++&&c>d)?++d:a<b”的值为0

已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)?++d:a<b”的值为0

为什么呢?求详细解答。谢谢。

括号里的,是什么意思呢

开始前:a=4,b=6,c=8,d=9

表达式:(a++,b>a++&&c>d)?++d:a<b

1、先计算a++  得出a=5

2、在判断 b>a++   先计算b>a 此时 a=5,b=6 所以条件不成立 返回假,同时a++ a=6

3、判断c>d, c=8,d=9, 所以条件不成立 返回假

4、在计算2和3返回结果的逻辑与运算  b>a++&&c>d  两边都为假,所以返回条件假

5、表达式A?B:C  A为真执行B语句,为假执行C语句

6、结合4.5 所以表达式执行 a<b   而a=6 b=6;不成立,所以返回假 对应数字就是0

 

这样不知道您看懂了吗,希望对您有帮助,码子不容易,还望采纳

是a++,还是a++;?

先a++,使得a=5

再b>a,即6>5,为true,然后a++,使得a=6

再c>d,即8>9,为false,再 &&,左边为true,右边为false,所以结果为false

再?,由于左边为false,所以结果为a<b,即6<6,为false,false值为0,所以输出0

括号里是条件表达式,为true则执行++d,为false则执行a<b

大概是这样吧

希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html