从零开始学编程---第一步-C语言(六)
下面看几个例子
#include <stdio.h>
main()
{
int a=0;
printf("a=%d\n",a++);
printf("a=%d\n",a);
}
++在后,所以是先运算后递增,第一个a++ 相当于 a=a+1 也就是 a=0+1 此时的a本来就是0 所以第一个a结果是a=0,也就是=后面的那个a
运算后,a=1,也就是递增后的结果,所以第2个结果是a=1,=号前面的那个a
#include <stdio.h>
main()
{
int a=0;
printf("a=%d\n",++a);
printf("a=%d\n",a);
}
++在前 ,后递增再运算 ++a 也等于a=a+1 递增结果为a=1 运算结果也是a=1
所以两个a都是a=1
以下的程序就不说原因了,大家自己想
#include <stdio.h>
main()
{
int a=0;
a++;
printf("a=%d\n",a++);
printf("a=%d\n",a);
}
结果为a=1,a=2
#include <stdio.h>
main()
{
int a=0;
a++;
printf("a=%d\n",++a);
printf("a=%d\n",a);
}
结果a=2,a=2
#include <stdio.h>
main()
{
int a=0;
++a;
printf("a=%d\n",a++);
printf("a=%d\n",a);
}
结果a=1,a=2
#include <stdio.h>
main()
{
int a=0;
++a;
printf("a=%d\n",++a);
printf("a=%d\n",a);
}
结果a=2,a=2
a++和++a你们有些应该有点晕了吧
让我们用数学运算在了解一次
int a=0,b=3;
a=(b++)+(b++)+(b++);
++在后是先运算后自加 所以先运算 a=3+3+3 结果a=9
然后b再自加,自加3次,所以b=6
int a=0,b=3;
a=(++b)+(++b)+(++b);
++在前是先自加后运算 自加3次 先自加 b+1=4 存到第一个b里 b此时是4
再自加 b+1=5 存到第二个b里 b此时是5
再自加 b+1=6 存到第二个b里 b此时是6
结果a=4+5+6 a=15 b=6
注意在VC6.0编译器,这里的结果是a=16,b=6
有的编译器结果还是这样 a=6+6+6=18 a=18
所以根据编译器的不同结果也会不同,只限制为++在前的多运算,这个你也不需要太困惑,++在前的多运算我们很少用到
#include <stdio.h>
main()
{
int a=0,b=3;
a=(b++)+(b++)+(b++);
printf("a=%d\n",a);
printf("b=%d\n",b);
a=0,b=3; //变量a重新归零,b重新归3
a=(++b)+(++b)+(++b);
printf("a=%d\n",a);
printf("b=%d\n",b);
}
结果a=9 b=6
a=16 b=6
如果
int a=1,b=2,c;
c=a++*b
结果是多少?
c=a++*b可以看成c=(a++)*b 等于 a*b a++
++在后先参与运算后递增 先a*b 后a++
结果c=2
c=++a*b 可以看成c=(++a)*b 等于 ++a a*b
++在前先递增后参与运算 先++a 后a+b
结果c=4
下面是程序:
#include <stdio.h>
main()
{
int a=1,b=2,c=0;
c=a++*b;
printf("c=%d a=%d\n",c,a);
a=1,b=2,c=0;
c=++a*b;
printf("c=%d a=%d\n",c,a);
a=1,b=2,c=0;
c=a++*b++;
printf("c=%d a=%d b=%d\n",c,a,b);
a=1,b=2,c=0;
c=++a*++b;
printf("c=%d a=%d b=%d\n",c,a,b);
补充 :a--和--a的用法也是一样的
++和--运算符非常高效,++和--编译后值生成一条语句,而用+1或-1进行加1或减1不会总是这么高效
请熟悉++和--的用法 特别注意在前和在后的区别
最新内容
热点内容
- QQ群
- 返回首页
- 返回顶部