main()
{
int x=4, y=25,z=2,t;
t=z=(--y/++x)*z--;
printf("%d%d",t,z);
}
结果8和7。
main()
{
int x=4, y=25,z=2,;
z=(--y/++x)*z--;
printf("%d%d",t,z);
}
为什么这段结果就是7。
要详细的分解他的计算过程。
main()
{
int x=4, y=25,z=2,t;
t=z=(--y/++x)*z--;
printf("%d%d",t,z);
}
结果8和7。
main()
{
int x=4, y=25,z=2,;
z=(--y/++x)*z--;
printf("%d%d",t,z);
}
为什么这段结果就是7。
要详细的分解他的计算过程。
第一个:
t=(24/5)*2=4*2=8,z也等于8
z自减1后为7
第二个:
因为你程序里根本就没有定义t,所有值有z的值为7了
main() { int x=4, y=25,z=2,t; t=z=(--y/++x)*z--;//先算括号里的,--y后,y=24,++x,x=5;24/5=4(因为两个都是INT型的所以只有整数部分)
在是4*z--相当于4*2=8;因为是后减所以T=8,z自减1后Z=7; printf("%d%d",t,z); }
2:main() { int x=4, y=25,z=2,; z=(--y/++x)*z--;//与上面相同z=(24/5)*2=8,在自减1,z=7; printf("%d%d",t,z);//t没有定义当嘛,应该要报错哟。 }
我运行你的程序,第一段是8和8,第二段是8,怎么你的编译器有问题?
计算过程如下:
第一段程序中,++和--优先级大于+,-,*,/,前缀++,--表示先将数加(减)1,再用于所在的运算式中运算;而后缀++,--表示先将数用于所在的运算式中运算,再将数加(减)1。所以(--y/++x)*z--=(24/5)*2=4*2=8,然后依顺序z=z--=1,z=8,t=z=8,所以结果是8和8。
第二段程序z的计算过程同上,结果也是8.