C语言中int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf
C语言中inta=1,b=2,c=3;c=(a+=a+2),(a=b,b+3);printf("%d,%d,%d\n",a,b,c);}运算结果...
C语言中int a=1,b=2,c=3;
c=(a+=a+2),(a=b,b+3);
printf("%d,%d,%d\n",a,b,c);}运算结果 展开
c=(a+=a+2),(a=b,b+3);
printf("%d,%d,%d\n",a,b,c);}运算结果 展开
展开全部
C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如:
3+5,6+8
称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为
表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式
a=3*5,a*4
对此表达式的求解,读者可能会有两种不同的理解:一种认为“3*5,a*4” 是一个逗号表达式,先求出此逗号表达式的值, 如果a的原值为3,则逗号表达式的值为12,将12赋给a, 因此最后a的值为12。另一种认为:“a=3*5”是一个赋值表达式”,“a*4”是另一个表达式,二者用逗号相连,构成一个逗号表达式。这两者哪一个对呢?赋值运算符的优先级别高于逗号运算符, 因此应先求解a=3*5(也就是把“a=3*5”作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为60。
3+5,6+8
称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为
表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式
a=3*5,a*4
对此表达式的求解,读者可能会有两种不同的理解:一种认为“3*5,a*4” 是一个逗号表达式,先求出此逗号表达式的值, 如果a的原值为3,则逗号表达式的值为12,将12赋给a, 因此最后a的值为12。另一种认为:“a=3*5”是一个赋值表达式”,“a*4”是另一个表达式,二者用逗号相连,构成一个逗号表达式。这两者哪一个对呢?赋值运算符的优先级别高于逗号运算符, 因此应先求解a=3*5(也就是把“a=3*5”作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为60。
追问
解释?为什么?
追答
首先你要知道逗号表达式是先计算左边在计算右边,整个表达式的值等于右边,你的题目,左边完全是用来误导你的,虽然左边算出来a=4,但是右边又重新把a = b
2014-12-29
展开全部
c=(a+=a+2),(a=b,b+3);
->c=(a+=a+2);(a=b,b+3);
->c=(a+=a+2);a=b;b+3;
追问
嘛意思?能解释清楚点吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int a=1,b=2,c=3;
c=(a+=a+2),(a=b,b+3);
相当于两个顺序语句:
先运行了c=(a+=a+2)这个语句得出c=a=a+1+2=4;
然后运行a=b,b+3;得出a=b=2;后面的b+3单纯是迷惑人而已,不起作用。
所以输出的答案是a=2,b=2,c=4;
c=(a+=a+2),(a=b,b+3);
相当于两个顺序语句:
先运行了c=(a+=a+2)这个语句得出c=a=a+1+2=4;
然后运行a=b,b+3;得出a=b=2;后面的b+3单纯是迷惑人而已,不起作用。
所以输出的答案是a=2,b=2,c=4;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案:2,2,4
追问
为什么?解释
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主自己敲下代码运行结果不就知道了?
追问
就是不知道为什么是这个结果啊,试卷题目
追答
2,2,4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询