第一个 判断语句为真,所以输出--a
--a.公用了两次,所以 i为1
http://t.csdn.cn/cs9Yx
(--a==b++): --a先运算a--再赋值,a=2;b++,先赋值再++,b=2;所以(--a==b++)是对的,执行--a,因为a是经历过一次--的再来一次--a那么a也就编程了1.
供参考:
#include <stdio.h>
int main()
{
int i,j,k,a=3,b=2;
i = (--a == b++)?--a:++b; // --a == b++ 这句先执行,--a ==> a=2,b++ ==> b = 2,b++ ==> b = 3
// (a == b)? --a:++b; (2 == 2)成真,所以执行 --a: ==> a = 1, i = a==> i = 1 ; ++b 未被执行
j = a++; k = b; // j = a ,a++;==> j=a=1,a++ = 2; k = b; ==> k = b = 3;
printf("i=%d,j=%d,k=%d",i,j,k);// 输出:i=1,j=1, k=3;
return 0;
}