c语言算法,求教

来源:百度知道 编辑:UC知道 时间:2024/07/08 03:21:33
main()
{
int x=4,y=25,z=2;
z=(--y/++x)*z--;
printf("%d",z);

运行结果是7
main()
{
int x=4,y=25,z=2,t;
t=z=(--t/++x)*z--;
printf("%d,%d",t,z);
}
运行结果是8,7

帮忙解释下 ,谢谢
不好意思 打错了 第一个运行结果是8,其他都是对的

路过看到,帮忙解决下吧。楼上两位都说错了。第一题就是7.因为
z = 4 * z--;
此时z = 2;所以z = 8;但还没完,z--还要做,所以z = 7.楼上的验证过么?没验证就不要想当然,我已经验证过。
至于第二题,楼主意思应该是这样:
int x=4,y=25,z=2,t;
t=z=(--y/++x)*z--;
printf("%d,%d",t,z);
是--y而不是--t。这里和上面不同的是z = 4 * z--,也就是z = 8后就赋给了t,所以t=8,而z--还要做,所以z=7,所以结果就是8,7.还有不懂得继续问。

main()
{
int x=4,y=25,z=2;
z=(--y/++x)*z--;
printf("%d",z);


--y=24.
++x=5
--y/++x=4;
z--=2;
(--y/++x)*z--=8
不是7.。第一题是8

main()
{
int x=4,y=25,z=2,t;
t=z=(--t/++x)*z--;
printf("%d,%d",t,z);
}
第二题。t没有初始化
所以这个本身就是错的=(--t/++x)*z--;
电脑会随机给t一个值。因此运行的错误也不可能是8,7
楼主自己运行一下疑知道了

隔壁的虫子是正解!!!!!绝对正解。支持下。这个问题讨论了无数次了。不同编译器结果不一样

路过,看到楼上朋友的争论问题。

关于第一个,运行结果是7还是8的问题,在不同的编译平台下,运行结果会不同。可以说都对,也可以说都不对。因为这个表达式本事就是无定义的。举个例子,int i=3; i=i++;这时i是3还是4呢?不同编译器结果不同。

第二个, t=z=(--t/++x)*z--;中t未被初始化就引用,产生的