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); }如果可以告诉步骤,为何--a=b++

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 10:27:04
main() {int i,j,k,a=3,b=2; i=(--a==b++)?--a:++b; j=a++;k=b; printf(

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); }如果可以告诉步骤,为何--a=b++
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); }
如果可以告诉步骤,为何--a=b++

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); }如果可以告诉步骤,为何--a=b++
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.