关于a++ 和++a

来源:百度知道 编辑:UC知道 时间:2024/05/17 08:21:04
#include <stdio.h>
int main(void)
{
int a=0;
while(a++<10)
printf("a=%d\n",a);

}
为什么不是从0开始打印呢 不是先使用在++吗 那这里不是和++a的效果一样了?

int a=0;
int b=a++;//执行完这句后,b=0,a=1
//==============================
int a=0;
int b=++a;//执行完这句后,b=1,a=1
//==============================
a++可以理解为先用再加,而++a可以理解为先加再用,也就是说,a++的值是a加1之前的值,而++a的值是a加1之后的值
//==============================
对于你的代码,第一次执行到while语句时,a=0,a++的值也是0,但是,判断完条件后,a的值就变成1了,因为执行了a++,所以从1开始打印,打印到10.但如果你改成++a<10,仍然是从1开始打印,但只能打印到9,因为当a=9时,++a的值是10,不满足打印条件。
//==============================
我说话经常没条理,乱,希望你能看懂。

a++<10 => a<10; a+=1;
++a<10 =>a+=1; a<10;

while(a++<10) prints 1...10
while(++a<10) prints 1...9

do{
printf("a=%d\n",a);
}
while(a++<10)
prints 0...10

先使用是指在while循环中先使用,即while循环相当于:
whlie(a<10);
a=a+1;
两句语句,然后再打印只能从1开始了
如果是++a,就只打印1-9了,不打印10

a++是在a使用后a=a+1,就是在while语句判断条件之后,a=a+1,因此做计算的时候a=1

++a前自增
--a后自增
如下:
m=3
n=m++
先把3赋给n,然后m增1(m的最新值是4)。相反:
m=3