#include "stdio.h"
void main()
{
int a=-1,b=1,c;
c=++a==b--?a+2:b+3;
printf("%d",c);
}
个人推测:
是先算++a==b结果为0赋值给c
然后b--返回0给b
最后输出b+3显示为3
求大佬给个计算流程!!!总感觉自己说的好像不对
c=++a==b--?a+2:b+3;
先计算 ++a 对a增加1,返回a增加后的值:0
再计算 b-- 先返回b原本的值:1, 再对b减少 1,b变成0
之后进行 0==1 的比较, 结果为0 (c语言中0表示假)
最后才是三目运算 0?a+2:b+3 0表示假执行 b+3
b是0 结果就是3
int a=-1,b=1,c;
c=++a==b--?a+2:b+3;
printf("%d",c);
1.单目运算符的优先级高于关系运算符
++a=0,
b-- = 1 特别说明:在比较的时候b的值还是1,但是比较完成后,b的值就是0了,--在后是先比较再减一。
所以返回假,计算b+3
因为前面b--后,值为0了,所以+3的结果是3
详细讲解:https://edu.csdn.net/course/detail/2766
如果有人这样写给我, 我都想给他打成🐷......
请采纳,谢谢!
b先--,a再++,然后a和b进行比较,结果为false(0),此时进行?:运算得到b+3,赋值给c。输出!
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632