关于 ( ++a )和( a++ )

  1. /* 
  2.     这个例子主要是考虑到a++和++a的存储问题; 
  3.     我们知道,对于a++是先将a给表达式再++; 
  4.     那么这就是需要一个tmp空间来保存++之前 
  5.     的a!!!但是对于++a是不需要的,因为先 
  6.     执行++,那么就是直接改a空间内容就好了! 
  7.     那么我们下面的问题就是这样! 
  8. */  
  9.   
  10. #include <stdio.h>  
  11.   
  12. int main()  
  13. {  
  14.   
  15.     int a = 4;  
  16.   
  17.     /* 
  18.         解释:下面的答案在Linux和VC下测试是9; 
  19.         如果这样的形式不好看,那么写成这样就 
  20.         可以了:a = a + ( a++ ); 
  21.         那么由于a++是先把数放到tmp空间再++; 
  22.         所以,执行顺序:把后面a放进tmp空间,然后 
  23.         a的存储空间数++,那么现在a中是5,tmp中是4 
  24.         最后a = a + tmp;所以最终结果==9 
  25.     */  
  26.     a += ( a++ );                 
  27.     printf("a = %d\n\n", a);  
  28.       
  29.   
  30.   
  31.     /* 
  32.         解释:这里和上面的区别就是++先后执行的 
  33.         问题,执行顺序:先a++,那么此时的a中就是 
  34.         5了,然后将这个结果也放进一个tmp空间, 
  35.         最后在相加,那么结果就是:5 + 5 == 10 
  36.     */  
  37.     a = 4;  
  38.     a += ( ++a );  
  39.     printf("a = %d\n\n", a);  
  40.       
  41.   
  42.     /* 
  43.         注意:下面的代码编译是通过不了的哦!为什么? 
  44.         其实自最开始已经解释了!就是有没有tmp的问题! 
  45.         注意a++是先把a给表达式,再++,那么对于左边 
  46.         来说,其实给的存储空间是tmp而并不是a本身,对于 
  47.         tmp来说是不可以被赋值的,只能是作为输入操作!! 
  48.         所以。。。 
  49.     */  
  50.   
  51.     /* 
  52.     a = 4; 
  53.     (a++) += a; 
  54.     printf("a = %d\n\n", a); 
  55.     */  
  56.   
  57.   
  58.     /* 
  59.         这个本质其实也是差不多的; 
  60.         就是先有了++a放到a中了,那么相当于是a的初 
  61.         始值是5,然后在执行:a += ( a++ );那么结果 
  62.         就是11呗,呵呵~ 
  63.     */  
  64.     a = 4;  
  65.     ( ++a ) += ( a++ );  
  66.     printf("a = %d\n\n", a);  
  67.           
  68.     return 0;  
  69. }  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值