C语言自增运算的问题,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/16 06:05:43
#include<stdio.h>
main(){
int i=1;
int a,b,c,d,e,f,g;
a=(i++);b=(i++);c=(i++);d=(++i);e=(i++);f=(++i);
g=a+b+c+d+e+f;
printf("%d\n",g);}
此程序运行结果为23;
#include<stdio.h>
main(){
int i=1;
int g;
g=(i++)+(i++)+(i++)+(++i)+(i++)+(++i);
printf("%d\n",g);}
此程序输出却为18,感觉这两个程序一样;这两程序有啥不同啊!!
谢谢指教!

第二个程序++i有2次 所以每个i都是3 一共6个i当然是18
等计算完了 i++的部分才开始起作用

g=(i++)+(i++)+(i++)+(++i)+(i++)+(++i);
拆开后是:++i;++i;g=i+i+i+i+i+i;i++,i++,i++;i++;

++i先运算后赋值和i++先赋值后运算
的问题
a=i++ ;此时的a=1,而在运算完这次的a=i++后 i值自增1
b=i++ ;此时的b=2 ……同上
c=i++ ; c=3 算后 i=4

d=++i ; d=5,运算后 i=5
e=i++ ; e=5,运算后 i=6
f=++i ; f=7,运算后 i=7

所以啊:a + b + c + d + e + f=1+2+3+5+5+7= 23

下面的就不用再细说了吧

#include<iostream.h>
void main()
{
int i=1,y(0),a,b,c,d=1,e;
y=(++i)+(i++)+(i++);
a=(++d);b=(d++);e=(d++);
c=a+b+e;
cout<<y<<i<<endl;
cout<<c<<a<<b<<e;
}
你看下这个就会明白了~