c = (a-=a-5), (a=b,b+3); 帮忙解释一下这段话吧~
若有以下程序段,其输出结果是inta=0,b=0,c=0;c=(a-=a-5),(a=b,b+3);printf("%d,%d,%d\n",a,b,c);...
若有以下程序段,其输出结果是 int a= 0, b = 0, c = 0;
c = (a-=a-5), (a=b,b+3);
printf("%d,%d,%d\n",a,b,c); 展开
c = (a-=a-5), (a=b,b+3);
printf("%d,%d,%d\n",a,b,c); 展开
5个回答
展开全部
第一个括号里面的
(a-=a-5)=> a= a-(a-5)=> a=0-(0-5)=>a=5
第二个括号里面的是逗号运算,结果为前一个 所以b+3不用管
a=b=0
最后
c=5,0(中间的运算都不用管,最后的就是这个)
于是相当于
c=5
最终输出会是
0,0,5
(a-=a-5)=> a= a-(a-5)=> a=0-(0-5)=>a=5
第二个括号里面的是逗号运算,结果为前一个 所以b+3不用管
a=b=0
最后
c=5,0(中间的运算都不用管,最后的就是这个)
于是相当于
c=5
最终输出会是
0,0,5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c = (a-=a-5),(a=b,b+3);
printf("%d,%d,%d\n",a,b,c);
c = (a-=a-5),(a=b,b+3); 逗号优先级最低,先运行c = (a-=a-5),即 a = a - (a - 5); c = a; 所以a = 5; c =5;
再运行(a=b,b+3),即 a = b; b+3; 所以 a = 0;b=0;
其中b+3没有什么作用
输出a = 0,b = 0; c= 5;
这完全是优先级问题!!!
自己慢慢体会吧
printf("%d,%d,%d\n",a,b,c);
c = (a-=a-5),(a=b,b+3); 逗号优先级最低,先运行c = (a-=a-5),即 a = a - (a - 5); c = a; 所以a = 5; c =5;
再运行(a=b,b+3),即 a = b; b+3; 所以 a = 0;b=0;
其中b+3没有什么作用
输出a = 0,b = 0; c= 5;
这完全是优先级问题!!!
自己慢慢体会吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是这样的
c=(a-=a-5)相当于a-(a-5),就是c=5,(a=b,b+3)就是a=b=0,b+3虽然执行了,但是没有赋值,不改变任何语句
答案是0,0,5
c=(a-=a-5)相当于a-(a-5),就是c=5,(a=b,b+3)就是a=b=0,b+3虽然执行了,但是没有赋值,不改变任何语句
答案是0,0,5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a-=a-5;分解就是
a=a-(a-5);
a=a-(a-5);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询