C语言自增运算

有一个循环
#include<stdio.h>
void main()
{
int i,sum=0;
i=1;
loop:if(i<=100)
{
sum=sum=i;
i++;
goto loop;
}
printf("%d\n",sum)
}
如果把i++换成++i会怎么样呢?
打错了 sum=sum+i

++是自增运算符,++k或k++都是让变量k的值加1;- -是自减运算符,- -k或k- -都是让变量k减1。运算符位于操作数之前,称为前置运算符;运算符位于操作数之后,称为后置运算符。
这两种运算符的差异是:前置运算符是对变量先递增(递减),然后参与其他运算,即先改变变量的值后使用;后置运算符则是变量先参与其他运算,后对变量递增(递减),即先使用后改变。
比如:int a=9;
b=a++;(b=9;a=10)
b=++a;(b=10;a=10)
对于你的这道题来说,++i和i++都是一样的;因为都是改变i的值。
还有,printf("%d\n",sum)少写了一个“;”,应该是printf("%d\n",sum);
希望对你有所帮助!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-09
没变化,一样的
第2个回答  2019-06-03
首先要理解的是++的优先级要高于+,在C中,必须先把所有++运行结束后,才会进行+法计算,楼主已经知道a最后的值为8了,固然C=8+8+8。对于D的结果,后++的优先级虽然高于+,但后++有个特点是,等所有值加完之后,才执行自加,所以D=5+5+5。

PS:我要提醒楼主的是,有时候,自加和自减的运算在不同的编译环境,会得出不同的结果。所以不必太在意这结果。
第3个回答  2019-02-08
汗。。。又是这种问题。。。关于++运算符,只需要掌握一句话里面一个变量只++一次的情况,对于多次对同一个变量++,这种在不同编译器上结果都是不同的,某些编译器完全可以以匪夷所思的方式来处理。例如那个24的结果,vs2010很可能是把a的取值先计算出来,然后再同时代入,就是说三个++a,都被拆成两部分,a1=a+1=6,a2=a1+1=7,a3=a2+1=8,然后把第三次算得到的a的值a3同时代入,得到8+8+8=24.但是在vs98上面,如果我没有记错,就是5+6+7的结果。
第4个回答  2019-07-14
int
a
,b,c,d;a
=
b
=
5;c
=(++a)+(++a)+(++a);d
=(b++)+(b++)+(b++); printf("%d,%d,%d,%d",a,b,c,d);
++a,a要加+1,c中有三个++a,所以要先运行三次++a,然后再进行三下+的运算,运行三次++a,即a=a+1->a=8
然后c=a+a+a=24,
d
=(b++)+(b++)+(b++); 先算三个+,然后再算三次b++,所以d=b+b+b=15
然后b++运行三次,b=8
所以a=8,b=8,c=24,d=15
第5个回答  2019-12-20
--y,++x,是先+1、-1,后计算表达式;而z--是先计算表达式,后减1
所以:计算顺序:
y=y-1,结果y=24
x=x+1,结果x=5
Z保持原值,z=2
所以:(--y/++x)*z--
=
(24/5)*2
=
4*2
=
8(暂存)
计算完后,Z=z+1=3;
然后,再执行z=8(将刚刚计算的Z=3覆盖)
注意:24/5,取整,结果是4
相似回答