main() {int i,j,k,a=3,b=2; i=(--a==b++)?--a:++b; j=a++;k=b; printf("i=%d,j=%d,k=%d\n",i,j,k); }
1个回答
展开全部
1. i=(--a==b++)?--a:++b; 三目运算符,先判断条件(--a==b++)得到的结果成立,最终得到结果a=2,b=3,其中a减1后被赋值了,b先被赋值为2,比较结束后b再加1,这个你应该能够懂是++、--的运行规则,得到结果后成立的运行,不成立的不运行,本题是运行--a,不运行++b。三目运算符右结合的情况时,再有两个以上或多个时,才用到这个功能,例如a?b : c ? d : j。最终i=1, a=1,b=3。
2. j=a++,先将a赋值给j,则j=1,最后a=2。
3. k=b=3。
2. j=a++,先将a赋值给j,则j=1,最后a=2。
3. k=b=3。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询