黑基网 首页 公开课 编程课程 查看内容

熟悉++和--的用法 特别注意在前和在后的区别

摘要: 下面看几个例子#include stdio.hmain(){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,也 ...

     友情提醒:公开课需要专用客户端播放,否则只能播放10多秒!点击下载    

下面看几个例子

#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不会总是这么高效
小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

本文出自:http://www.52bcx.com/Program/c/hx/list_12_2.html

免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人
1

路过

鸡蛋

刚表态过的朋友 (1 人)

相关阅读

最新评论


新出炉

返回顶部