无法获得三元运算符的输出

unable to get the output of ternary operator

代码

#include<stdio.h>
main()
{
    int big, x = 3, y = 2, z = 1, q = 4;

    big = (x > y
        ? (z > x ? 20 : 10 && x > y ? 85 : 12)
        : (y > z ? 40 : 10 || x < q ? 30 : 10)
    );

    printf("\nbig =%d", big);
    //getch();
}

输出是 85 但我不确定它是如何工作的 帮助我理解它..

&& 的优先级高于 ?:

big=(x>y?(z>x?20:10 && x>y?85:12): (y>z?40:10 || x<q?30:10));` 

将被解析为

big=(x>y?(z>x ? 20: ( (10 && x>y) ?85:12) ): (y>z ? 40: (10 || x<q?30:10)));

由于x大于y,所以20: (10 && x>y?85:12)会被执行。 10x > y 都将计算为 true(10 && x>y) ?85:12) 将给出 85.