C语言~ 9到12题 我错了的这里几道(画了红括号)~ 我想要知道解题过程 ,原因 蟹蟹
2个回答
展开全部
9、等号左边是个表达式,而表达式是不能被赋值的。
10、表达式是不能被赋值的。改为++i,是可以的。但是++(i+1)就不可以了。
11、问题1:3.6-5/2+1.2+5%2;
相当于 3.6 - ( 5/2 ) + 1.2 + ( 5%2 ),
其中 5/2=2.5,但是编译器默认处理数据为整形数据,所以得到的结果应该是 2
所以,3.6 - 2 + 1.2 + 1 = 3.8
问题2:int x=12,y=8,z; z=0.9+x/y;
这个问题跟问题1一样,
x/y=12/8=1.5,整形数据取值为1。
所以:0.9+1,整形数据取值依然是为1。
12、问题1:a+=a-=a*a
此题计算顺序为先计算a*a ,结果为9,
然后计算 a-=a*a,也就是 a-=9,此语法相当于:a=a-9 ,即a=3-9,
a的值变成-6,同时表达式的返回值为-6,
然后计算a+=(a-=a*a),此时a=-6
也就是a+=-6,即 a=a+-6, 相当于:a=-6+-6,
即,a的值为-12
问题2:int x=10,a; x+=x-=x-x;
此题计算顺序为先计算x*x ,结果为0,
然后计算 x-=x*x,也就是 x-=0,此语法相当于:x=x-0 ,即x=10-0,
x的值变成10,同时表达式的返回值为10,
然后计算x+=(x-=x*x),此时x=10
也就是x+=10,即 x=x+10, 相当于:x=10+10,
即,x的值为20
问题3:int a=0; a+=(a=8);
此题计算顺序为先计算a=8
然后计算a+=(a=8),此时a=8
也就是a+=8, 相当于:a=8+8,
即,a的值为16
展开全部
9.=号左边必须是变量不能是表达式,x+1是表达式,不能被赋值
10.++后面也是只能是变量不能是表达式,j+1是表达式,不能自加1
11.题中%和/的优先级最高(先进性计算),5/2=2(小数舍掉),5%2=1。于是又3.6-2+1.2+1
12.(1)a+=a-=a*a中先计算a*a =9 a值为3;在计算a-=9,a值变为-6;最后计算a+=-6,最终a值为-12
(2)x+=x-=x-x先计算x-x=0 x值为10;在计算x-=0,x值仍为10;最后x+=10,得到x=20
(3)a+=(a=8),先计算a=8,a值变为8,在计算a+=8 得到a=16
10.++后面也是只能是变量不能是表达式,j+1是表达式,不能自加1
11.题中%和/的优先级最高(先进性计算),5/2=2(小数舍掉),5%2=1。于是又3.6-2+1.2+1
12.(1)a+=a-=a*a中先计算a*a =9 a值为3;在计算a-=9,a值变为-6;最后计算a+=-6,最终a值为-12
(2)x+=x-=x-x先计算x-x=0 x值为10;在计算x-=0,x值仍为10;最后x+=10,得到x=20
(3)a+=(a=8),先计算a=8,a值变为8,在计算a+=8 得到a=16
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询