C语言中自增运算问题

发布时间:2024-05-14 12:52 发布:上海旅游网

问题描述:

#include <stdio.h>
void main()
{
int s,s1=2,t,t1=2;
s=(s1++)+(s1++)+(s1++);
t=(++t1)+(++t1)+(++t1);
printf("\ns=%d,s1=%d",s,s1);
printf("\nt=%d,t1=%d",t,t1);
}

运算结果中t=13 t1=5
t1=5我可以理解
但是根据我的认识……t=3+4+5=12 为什么会等于13呢?
2楼说的很详细
但是为什么VC++中t=13呢?
这也不是我编的程序里面有这个。。就是我们教程上的一道题

问题解答:

楼上的话已经说出来了,想补充一句话就是你的基础不够的扎实多做点练习

结果:s=6,s1=5;
t=15,t1=5;
如果是++t1的话是自增完再计算的,t=5+5+5=15

结果:s=6,s1=5;
t=15,t1=5;
如果是++t1的话是自增完再计算的,t=5+5+5=15
回答者:ewave1 - 初入江湖 二级 4-2 18:11

这个是在Turbo C中执行所得的结果,这是先执行三个前缀++,再求和的.而你执行这个程序是在VC++的环境中,而VC++不遵循Turbo C的求值顺序,就得到了t=13 t1=5
的结果,像这样能够产生副作用的代码在实际编程过程中极少用到,这样使用也大大降低了程序的可读性,建议尽量不要使用,我也把你的程序改了一点并执行了一下,你看看能看出执行顺序吗:
#include <stdio.h>
void main()
{
int s,s1=2,t,t1=2;
s=(s1++)+(s1++)+(s1++);
t=++t1;
printf("\ns=%d,s1=%d",s,s1);
printf("\nt=%d,t1=%d",t,t1);
t=(++t1)+(++t1);
printf("\nt=%d,t1=%d",t,t1);
t=(++t1)+(++t1)+(++t1);
printf("\nt=%d,t1=%d",t,t1);
}
结果是:s=6,s1=5
t=3,t1=3
t=10,t1=5
t=22,t1=8Press any key to continue
我也不知道是怎么弄的。

热点新闻