C语言 关于取值的问题


int A,B,C,m=1,n=0;
       A=(--m==n++)?- -m:++n;
       B=++m;
       C=n--;    
 

执行完上面的语句段后,A的值为-1, B的值为0, C的值为 1
求解这是为什么?是怎么计算的?

前置--m为零先和n比较为真,n再后置++,变1,取--m,m为-1
A为-1,B取m前置++,为0,C 先赋值为n为1,n再后置--

A=(--m==n++)?--m:++n;
前面一个 --m先执行 m=0 与 n=0比,相等 就是 A = --m, m又先要自减后赋值给A。所以 A=-1,此时m也=-1;赋值完成后--m==n++的后自增就会执行所以n=1,后面的++n没有被执行。
B=++m先自增,所以B=0
C=n-- 所以C=1 n的值是后自减 n=0但已与C无关了