请求C语言高手解答!!

来源:百度知道 编辑:UC知道 时间:2024/05/13 07:51:54
1.设已定义X为double类型变量
X=213.82631;
printf('%-6.2e\n",x);
则以上语句输出为 2.14e+02

请问.为什么结果是2.14e+02

2.int w=3,z=7,x=10;
printf("%d\n",x>10?x+100:x-100);
printf(%d\n",w++||z++);
printf("%d\n",!w>z);
printf("%d\n",w&&z);
答为:0

请问一下老师,答案是如何解得的???谢谢!!

3.下面程序的输出结果为()
main()
{intx,y,z;
x=0;y=z=-1;
x+=-z---y;
printf("x=%d\n",x);
}
答案为 X=2
请问X=2是如何解得的??~~ 谢谢!!

1。
%-6.2e "-"号是左对齐在本例中可有可无,"6"是之输出的最小宽度,
".n"对实数表示输出n位小数本例中".2"表示输出两位小数,
"e"是格式字符,表示以指数形式输出单,双精度实数。
"2.14e+02 是指数形式"

2。
x>10?x+100:x-100是条件表达式因为x=10,所以x>10不成立因此输出的值是
x-100的结果-90。

w++||z++是逻辑表达式,c语言中0表示假,非零值表示真,w或z有一者为非零值即返回1所以结果为1,"w&&z"与本例类似结果也为1。

!w>z与运算符优先级有关,!(逻辑非)优先级高于关系运算符因此此表达式等价于(!w)>z,因为w非零,所以!w结果为0,z=7,0>7不成立故其值为假,即为0.
故最后答案为-90 1 0 1

3.
x+=-z---y; 等价于x=x+(-z--)-y;因为自增和自减运算符优先级高于算数运算符,而自增和自减运算符结合性是从右至左的因此和-z结合。
因为a++,a--之类是先参加运算后自增自减所以x=x+(-z--)-y
也可看作
x=x+(-z)-y;//带入数字后即为"x=0+(-(-1))-(-1)"即x=0+1+1;
z--;
因此X=2