d=a>b? a>c?a:c:b什么意思

int a=5, b=4, c=6, d;
printf("%d", d=a>b? a>c?a:c:b);

条件运算符( ?:)
格式:
表达式1 ?表达式2 :表达式3
嵌套时,结合方向:自右向左

  如果表达式1为真,结果=表达式2的值;否则

结果=表达式3的值
d=a>b ?(a>c ?a : b) : c
(此处加的括号只是个人为了清晰明了,便于解释)

【运算符优先级:条件运算符(?:)大于 关系运算符(>)大于 赋值运算符(=)】

如果表达式1,(a>b)为真,
就按条件表达式运算规则继续算
表达式2(a>c ?a :b),算完这个再把结果赋给d;
否则就为表达式3 (c),直接把c的值赋给d

如果没错的话是两个三元运算符嵌套的吧,这样写你大概能明白了:
a>c?a:c将这个式子返回的值假设为x,
a>b?x:b。

这是C语言的三目运算符
A?B:C
如果A为真,则是B的值,否则是C的值

加点括号,就看得明白些:d = (a > b) ? (a>c?a:c) : b