作业帮 > 综合 > 作业

求几个从语言问题的答案和原因

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/24 05:31:08
求几个从语言问题的答案和原因
1.
int i=010,j=10;
printf("%d,%d",++i,j--);
2.
已知 w=1,x=2,y=3,z=3,a=4,b=2;则执行语句(a=w>x)&& (b=y>z)后,
a,b的值是什么?
第一个输出9,10
先说i,赋值为010,意思就是8进制,也就是说010是八进制数,就是10进制的9.
printf是自右向左的,也就是说先计算左右边的数,然后到左边的,j--的意思就是先进行操作然后j再自减1,++i的意思是说先自加然后再进行对i的操作.最后输出的时候j还没有自减1,就输出了,也就是10,而i是自加了一之后才输出的,也就是9
第二个我看看
耽误了下,继续回答.第二个其实比较简单,
(a=w>x)&& (b=y>z); 这句的执行是这样的,&&这个运算符有一个特点,只要左边一项为真,则整个表达式为真,此时就不再计算右边的表达式.而一个等号表达式(比如这里的a=w>x)在C语言里面的意思就是永远为真,也就是说a=w>x 放到括号里面表示的意思就是真,所以&&运算为真,右边不再进行计算.
然后看看a的值,w的值是1,x是2,所以1>2是返回0赋值给a,到此可以得出结果输出是
0,2