C语言逗号表达式问题?

如(a=4*5,a*2),a+6;题目要求这个表达式的值,计算机运行结果为40,但是老师说结果为26,我想问一下逗号表达式括号外面的a+6算进逗号表达式了吗?... 如(a=4*5,a*2),a+6;题目要求这个表达式的值,计算机运行结果为40,但是老师说结果为26,我想问一下逗号表达式括号外面的a+6算进逗号表达式了吗? 展开
 我来答
microroom
科技发烧友

2020-04-02 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1635万
展开全部
a+6当然是逗号表达式的一部分。实际上,(a=4*5,a*2),a+6是由两个逗号表达式组成的,(a=4*5,a*2)是第1个逗号表达式,它的计算结果与a+6一起构成了第2个逗号表达式。而逗号表达式的结果是最右边那个子表达式计算的结果。

(a=4*5,a*2)是这样计算的:
因赋值运算的优先级高于逗号表达式,因此,先算a=4*5,结果是a=20,再算a*2,所以逗号表达式(a=4*5,a*2)的结果是40。

所以,第1个逗号表达式计算完后有:
a=20
第2个逗号表达式是40,a+6,经计算后,第2个逗号表达式的结果是26(即最右边那个子表达式a+6的值)。

但如果要输出整个逗号表达式的值,不能用printf("%d",(a=4*5,a*2),a+6);因为这是在调用函数,(a=4*5,a*2),a+6被看成了向函数传递的两个参数(即多传了一个参数a+6),而不是作为一个逗号表达式。因为函数调用会忽略所有多传递的参数,所以,以上的函数调用就相当于printf("%d",(a=4*5,a*2));,输出的是40。而printf("%d",((a=4*5,a*2),a+6));才会输出整个逗号表达式(a=4*5,a*2),a+6的值26,这一点需要注意。
匿名用户
2020-04-02
展开全部

要求这个表达式的值 非常简单,把表达式 赋值给一个变量

再观察 变量的值

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雲飛_飛雲
2020-04-02 · 超过16用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:6.4万
展开全部
#include<stdio.h>
int main() {

int a;
printf("%d",((a=4*5,a*2),a+6));
return 0;
}
算进去了,你可能是没加括号直接输出了,这道题应该加上括号,不太严谨,但出题人的意思应该是求((a=4*5,a*2),a+6)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式