C语言条件运算

来源:百度知道 编辑:UC知道 时间:2024/05/21 13:04:02
a=102, b=721, c=111, d=444
d=a>c?c>b?a=c:a=b:a>d?a=d:a=a

a=102, b=721, c=111, d=444
d=a>c ? [ (c>b)?(a=c:a=b) |:| (a>d?(a=d:a=a)) ]

没事别写这么套乎的语句,看得头晕。
这实际上是在对d赋值,为了方便看我改了几个符号
如果a>c成立
执行中括号里 |:| 左边的,否则执行它右边的 这里102不大于721所以执行|:|右边的,右边又是一个条件表达式,这里a>d不成立,再执行冒号右边的 a=a
最后结果
a b c 不变 d 被从新赋a的值102

d==102

a<c,所以d=a>d?a=d:a=a;
a<d,所以d=(a=a);
因此,d=a=102

应该是d=721
原始式应该等于//
int a=102,b=721,c=111,d=444,x,y ;
x=(c>b)?(a=c):(a=b);
y=(a>d)?(a=d):(a=a);
d=a>c?x:y;

这个要细细的去理解,了解3目运算的法则,再吧基础的书拿起来看一遍就好了^

你这是啥意思啊,谁能看懂啊