C语言问题,本人菜鸟,跪求大神详解!!

inta,b,c:a=10;b=3;那么a-b+++1=?什么意思啊?还有a=b=c=10d=(c++,c+10,100-c);那么a,b,c,d分别等于多少又c=(d=... int a,b,c:
a=10;
b=3;
那么a-b+++1=?什么意思啊?

还有a=b=c=10
d=(c++,c+10,100-c);
那么a,b,c,d分别等于多少
又c=(d=a+b),(b+d);(什么意思啊?)
那么a,b,c,d又分别等于多少啊?
求详解,谢谢先!
展开
 我来答
White_MouseYBZ
2013-02-13 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6469万
展开全部
a-b+++1的意思是a-b+1;b++;所以结果是10-3+1=8;b=b+1=4。
d=(c++,c+10,100-c);是逗号表达式,括号内从左至右算,但只把最后一个表达式100-c的值赋给d。那就是c=c+1=11,然后把最后100-c=89赋给d,所以最后a=10,b=10,c=11,d=89。
c=(d=a+b),(b+d);也是逗号表达式,算法是d=a+b=10+10=20,再把20赋给c,所以最后a=10,b=10,d=20,c=20。
追问
既然c=(d=a+b),(b+d);也是逗号表达式,为什么不是把不b+d的值赋给c呢?
追答
这个逗号表达式是两项,第一项是c=(d=a+b),第二项是(b+d),第一项已把值赋给c了,而第二项没有赋给任何变量。要达到你追问的目的,得写成c=((d=a+b),(b+d));才行。你比较一下二者的不同。
水里风
2013-02-13 · TA获得超过1528个赞
知道小有建树答主
回答量:1294
采纳率:80%
帮助的人:517万
展开全部
楼上那些解答我基本同意,但是第二个赋值应该是a=10,b=10,c=11,d=79。。最后一个问题他们应该说错了。这是一个逗号表达式,不是赋值,在C语言里,赋值运算符比逗号运算符高级,所以这个式子实际上是先把a+b的值赋给d,再把d的值赋给c,这是逗号表达式的第一个值,然后再计算后面的b+d,这是逗号表达式的第二个值,也就是这个式子最终的值。
更多追问追答
追问
之前我也那样想的,可是运行了下代码,d=89哎!
追答
不是吧??!那你知不知道为什么啊?我也搞不懂了。。不是每一个式子都要算么?。。亲,要是知道麻烦给讲解一下呗,谢啦!!我也就上个学期才学的C。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户66610
2013-02-13 · 超过15用户采纳过TA的回答
知道答主
回答量:96
采纳率:0%
帮助的人:50.8万
展开全部
第一a - b++ +1=?意思是a减b(因为你是后置++所以现在不增加b的值)加1等于多少?当然是等于8了,然后b自加1.a=b=c=10就是c赋10然后b在赋c的值a也赋b的值所以a,b,c的值都是10,
d = (c++,c+10,100 - c)应该是c + 10,然后100 -c的值付给d。因为第一个c++是后置++所以目前不自增。c=(d = a +b),(b+d);就是d 赋a+b的值然后在把b+d的值付给c。
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式