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++... 如果可以告诉步骤,谢谢,为何--a=b++ 展开
 我来答
乙浦泽52
推荐于2018-02-27 · TA获得超过141个赞
知道答主
回答量:45
采纳率:0%
帮助的人:38.6万
展开全部
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。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式