请问这道问题怎么回事?
答案:3 悬赏:70 手机版
解决时间 2021-04-13 07:46
- 提问者网友:姑娘长的好罪过
- 2021-04-12 20:32
最近正在忙着学C语言,在书上见到这样一道题:若有以下程序段:int a=0,b=0,c=0;c=(a-=a-5),(a=b,b+3);printf("%d,%d,%d\n",a,b,c);执行后的结果是什么?本人比较菜,请解释清楚一点。
最佳答案
- 五星知识达人网友:长青诗
- 2021-04-12 20:41
if(a>b,b>c,c>d)
逗号表达式与加减乘除本质上是一样的, 它的求值是从左向右依次对表达式求值, 整个表达式的结果取逗号表达式中最后一个表达的的结果, 如果非零, 就会使 if 成立!
依照上面的理论
c=(a-=a-5),(a=b,b+3)的执行顺序是这样的:
1、首先分两块,逗号前面的是第一块,先执行,逗号后面的是第二块,后执行;
2、两个块中,括号里的先执行
3、a -= a-5; //执行前, a=0, 执行后, a -= -5, a = 5;
c = a; //c = 5;
a = b; // a = b = 0;
b + 3; //执行,但是不修改任何数字
所以,最后结果是: 0, 0, 5
逗号表达式与加减乘除本质上是一样的, 它的求值是从左向右依次对表达式求值, 整个表达式的结果取逗号表达式中最后一个表达的的结果, 如果非零, 就会使 if 成立!
依照上面的理论
c=(a-=a-5),(a=b,b+3)的执行顺序是这样的:
1、首先分两块,逗号前面的是第一块,先执行,逗号后面的是第二块,后执行;
2、两个块中,括号里的先执行
3、a -= a-5; //执行前, a=0, 执行后, a -= -5, a = 5;
c = a; //c = 5;
a = b; // a = b = 0;
b + 3; //执行,但是不修改任何数字
所以,最后结果是: 0, 0, 5
全部回答
- 1楼网友:孤独入客枕
- 2021-04-12 23:03
逗号运算符,按顺序执行,取最后一个的值。
仅供参考!
- 2楼网友:人類模型
- 2021-04-12 22:01
结果是:0,0 ,5
由结果分析:
c=(a-=a-5),(a=b,b+3);
等价:c=(a=(a-(a-5)),(a=b,b+3);
等价:c=(a=5),(a=b,b+3);
此句是将a=5赋给c,c=5
此后:a=b,b+3;说明a=0,
b的值没有变化,即b=0(初始值)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯