C语言大佬请进来求解惑

#include<stdio.h>#include<math.h>intmain(){inta=3,b=5;printf("%d",(a+b,a-b));}这最后输出结果... #include <stdio.h>
#include <math.h>
int main()
{
int a=3,b=5;
printf("%d",(a+b,a-b));
}
这最后输出结果为什么是-2而不是8或者8-2呢
展开
 我来答
拥抱Linux
2019-03-17 · 知道合伙人教育行家
拥抱Linux
知道合伙人教育行家
采纳数:418 获赞数:2160
大学的校级奖学金,机械行业十年工作经验

向TA提问 私信TA
展开全部

这涉及到「逗号表达式」的概念。简单来说,相关定义如下:

逗号表达式的一般形式为:表达式1,表达式2

逗号表达式的求解过程是:先求解表达式1,再求解表达式2。

整个逗号表达式的值是表达式2的值。

此外,需要知道,逗号这个运算符的优先级是最低的,所以你上面的代码里,把后面的逗号表达式用圆括号括起来了,如果不括起来的就,又是另外一种含义了。

那么上面的逗号表达式(a+b,a-b)的值就是(a-b)的值,也就是-2了,所以输出-2。

如有帮助,烦请点采纳,谢谢!

最大的宝宝
2019-03-17 · TA获得超过828个赞
知道小有建树答主
回答量:1569
采纳率:67%
帮助的人:408万
展开全部
a+b,a-b 是逗号表达式,运算时从左往右算,以最右一个表达式的结果作为整个表达式的结果。所以a-b=3-5=-2,这即是结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓋成娘
2019-03-17 · TA获得超过110个赞
知道小有建树答主
回答量:264
采纳率:65%
帮助的人:102万
展开全部
在一个表达式中使用逗号运算符,如int a=1;int b=2;int c=(a,b);
此时c的值为2,使用逗号运算符时,整个表达式的值为最后一项的值,在上述例子中(a,b)这整个式子的值即为b,也就是为2
int a=3;int b=5;
(a+b,a-b)得值即为a-b,也就是-2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fastfs
2019-03-17 · TA获得超过1423个赞
知道大有可为答主
回答量:2659
采纳率:62%
帮助的人:804万
展开全部
因为这个括号里 是两个表达式 并且表达式 差没有给a或b赋值
里面有个逗号运算符 运算规则是从左往右
所以先算a+b为8 再算a-b只返回a-b 这是c语言的规则说明了的 返回最后一个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式