前者是先运算再付值。后者是先付值再运算。
比如说C
=--a
.当a
等于5时,C
等于4,是先把五减去一再付的值。当C
=a
--时,同样a
被赋值为五,C
的结果就为五,是先付的值,
但是,两式最后的a
都为四
假设int
a
=
1;
那么假设printf("%d",--a);那么是将a减1,然后输出a
输出的结果就是:0
假设printf("%d",a--);是先输出a,然后执行a-1.
输出结果是:1
int
a
=
1;
printf("%d\n",a--);
//
是先输出a,然后执行a-1.
printf("%d\n",a);
//
所以这里输出的a是0!
而且注意不要把增量运算符或减量运算符放在输出中,比如:
int
a
=
1;
printf("%d\t%d\t%d\t%d\n",a,a++,a,a++);
输出结果是
3
2
2
1
你可能疑惑为什么第二个a++不是3呢?因为标准C并没有规定在一个语句中是每执行执行一次增减量运算符后执行增减还是整个语句执行完后完成增减...所以最好不要使用这种方法.可以把语句分开来运算...
b=a--;
这个语句等价为
b=a;
a=a-1;
而
b=--a;
等价为
a=a-1;
b=a;
也就是说减号在前面就先算减再把减了之后的值进行运算
07-27
22:33
前者是先运算再付值。后者是先付值再运算。
比如说C
=--a
.当a
等于5时,C
等于4,是先把五减去一再付的值。当C
=a
--时,同样a
被赋值为五,C
的结果就为五,是先付的值,
但是,两式最后的a
都为四