问题描述:
#include <stdio.h>
void main()
{
int i=12,j=34,a,b,c,d;
a=++i+1;
b=++i;
c=--j;
d=j--;
printf("i++=%d,++i=%d,--i=%d,i--=%d\n",i++,++i,--i,i--);
printf("j++=%d,++j=%d,--j=%d,j--=%d\n",j++,++j,--j,j--);
printf("a=%d,b=%d\n",a,b);
printf("c=%d,d=%d\n",c,d);
}
#include <stdio.h>
void main()
{
int i=12,j=34,a,b,c,d;
c=--j;
d=j--;
printf("i++=%d,++i=%d,--i=%d,i--=%d\n",i++,++i,--i,i--);
printf("j++=%d,++j=%d,--j=%d,j--=%d\n",j++,++j,--j,j--);
printf("c=%d,d=%d\n",c,d);
}
这两个简单的程序怎么运行出来的i++^^^^^不一样呢?
小弟我还是刚刚开始学习C语言
还请大家赐教啊!
问题解答:
++i是先自增再计算,i++是先计算再自增加
a=++i+1; 相当于 i=i+1; a=i+1;
a=i+++1; 想当于 a=i+1; i=i+1;
printf()也是同样的道理, ++i是前增,i++是后增
a=++i+1;
b=++i;
虽然是给a和b赋值,但是++i是一个操作,i的值也变化了的。
你不觉得第一个程序比第二个程序多2句语句吗??
a=++i+1;
b=++i;
结果当然不可能一样。。。。
第一个程序中有个语句“a=++i+1;”
运行作用是i自加1后再加1赋值给a
a的值是14,i的值是13
而第二个程序中没有这个语句,
i的值仍为12