三个数字间的比大小问题

max=(a>b)? a:(b>c? b:c);
printf("max=%d",max);

b与c比较,如果c大于b的话,那不就是用a和c比较了吗?但是程序里的是a和b比较。
为什么这样还是可以比出三个数的最大值呢?
求解 谢了

这程序有bug,如果a>b&&a<c最大值应该是c但是该程序返回的是a。
应该这样写


max=a>b? (a>c?a:c):(b>c?b:c);
printf("max=%d",max);