![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
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又分别等于多少啊?
求详解,谢谢先! 展开
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又分别等于多少啊?
求详解,谢谢先! 展开
展开全部
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。
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));才行。你比较一下二者的不同。
展开全部
楼上那些解答我基本同意,但是第二个赋值应该是a=10,b=10,c=11,d=79。。最后一个问题他们应该说错了。这是一个逗号表达式,不是赋值,在C语言里,赋值运算符比逗号运算符高级,所以这个式子实际上是先把a+b的值赋给d,再把d的值赋给c,这是逗号表达式的第一个值,然后再计算后面的b+d,这是逗号表达式的第二个值,也就是这个式子最终的值。
更多追问追答
追问
之前我也那样想的,可是运行了下代码,d=89哎!
追答
不是吧??!那你知不知道为什么啊?我也搞不懂了。。不是每一个式子都要算么?。。亲,要是知道麻烦给讲解一下呗,谢啦!!我也就上个学期才学的C。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一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。
d = (c++,c+10,100 - c)应该是c + 10,然后100 -c的值付给d。因为第一个c++是后置++所以目前不自增。c=(d = a +b),(b+d);就是d 赋a+b的值然后在把b+d的值付给c。
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询