搜索
首页 电脑/网络 软件

帮我解释一个简单的C程序

int a=0,b=0,c=0;c=(a-=a-5),(a=b,b+3);printf("%d,%d,%d\n",a,b,c);输出结果为什么是0,0,5关于逗号表达式搞昏了。。请那位高手详细说明下这个答案的由来,谢谢。

全部回答

2018-03-31

0 0
  int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3); printf("%d,%d,%d\n",a,b,c); 首先弄清运算的先后顺序问题: 1,c=(a-=a-5):整体上是从左到右的顺序计算,即:a-=-5;再把a-(-5)赋给a,所以a=5,最后把a赋给c,c=5 2,计算第二个式子,a=b,因b=0,所以此时a又等于0了 3,b在整个计算中没有改变,所以始终为0 要注意整个过程中a的变化,即先是初始值0,之后是5,最后又是0。
  

2018-03-31

61 0
首先a-=a-5表示a=a-(a-5),结果a=5, 然后,解(a=b,b+3),首先求a=b,得a=0,这就是a的答案; b+3的结果是3,但b仍=0是以为它没有赋值,所以b=0, 最后求c,(a-=a-5)求得的值=5,(a=b,b+3)求得的值=0,应为逗号语句的优先级最低,所以只需要(a-=a-5)这个值就可以了,所以c=(a-=a-5)=5。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
软件
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
软件
多媒体软件
系统软件
办公软件
网络软件
图像处理软件
举报
举报原因(必选):
取消确定举报