a++与++a的区别
a++与++a都表示让自己+1,与a=a+1的意思相同
当赋值给其它变量时就会有差别
例如:
#include<stdio.h>
int main(void)
{
int a=0,b,c;
b=a++;
c=++a;
printf("b=%d,c=%d",b,c);
return 0;
}
结果为:b=0,c=2
解析:b=a++代表a先赋值给b,然后+1;c=++a代表a先+1,然后赋值给c。
例题:
#include<stdio.h>
int main(void)
{
int i,j,k,a=3,b=2;
i=(--a==b++)||b--?--a:++b;
j=a++;k=b;
printf("i=%d,j=%d,k=%d\n",i,j,k);
return 0;
}
答案:i=1,j=1,k=3
解析:(--a==b++)
- -a为2,b++为3,两值不相等,所以结果为0(false);b--?--a:++b;
b- -为2(非零值)故执行- -a,- -a为1,所以结果为1(ture),||为或运算,所以i=1。
j=a++(a先赋值再+1),j=1。
k=b,故k=3。