关于问号表达式的一些问题

int n,i=1,j=2;
n=i>j?i++:j++;
执行结束n的值为啥是2呀啊救命

等同于:

int n = 0;
int i = 1;
int j = 2;

if (i>j) {
  n = i++;
} else {
  n = j++;
}

n = j++表示先把j赋值给n,然后自增加.

n = i > j ? i++ : j++; ==> n = (i > j ? i++ : j++);

(i > j ? i++ : j++) 先执行 ? ,i = 1 > j = 2 ? i++: j++ ,i 小于 j 返回 j++

n = j++ , n = j ,j++ , 所以最终结果: n = 2 , j = 3.