`
heiheben
  • 浏览: 132595 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

关于自增(减)操作的发生时机

阅读更多

关于自增(减)操作的发生时机

第一个例子

 

#include   <iostream>   
  using   namespace   std;   
  int   main()   
  {   
  int   i,j;   
  i=j=3;   
  cout   <<   i++   <<   ","   <<   i   <<   endl;     
  cout   <<   i   <<   endl;   
  cout   <<   ++j   <<   ","   <<   j   <<   endl;   
  cout   <<   j   <<   endl;     
  return   0;   
  }   

第二个例子

   

#include   <iostream>   
  using   namespace   std;   
  int   main()   
  {   
  int   n1,n2;   
  n1=n2=3;   
  n2=n1++,n2++,++n1;   
  cout   <<   "n1="   <<   n1   <<   endl;   
  cout   <<   "n2="   <<   n2   <<   endl;   
  return   0;   
  }   

 

第三个例子

   

#include   <iostream>   
  using   namespace   std;   
  int   main()   
  {   
  int   x=4,y=25,z=2;   
  z=(--y/++x)*z--;   
  cout   <<   "x="   <<   x   <<   endl;   
  cout   <<   "y="   <<   y   <<   endl;   
  cout   <<   "z="   <<   z   <<   endl;   
    
  return   0;   
  }   

 

 

前加(减)是在表达式(或语句)执行之前运行,  
  后加(减)是在表达式(或语句)执行后完成的.  
  语句或','分割的表达式都会使后加(减)起作用了.  
  前加(减)++i优先级高于*/,顺序从右至左,先结合后运算.  
  后加(减)优先级低于*/及=,顺序从左至右,先运算后结合.  
  同一表达式中不影响自身.上面结果是:  
  3,3  
  4  
  4,3  
  4  
  n1   =   5,   n2   =   4,   x   =   5,   y   =   24,   z   =   7  
  语句z=(--y/++x)*z--;分析为:  
  z   =   (((--y)/(++x))*z)--  
  z   =   (24/5)*2   -   1  
  整除   24/5   =   4   再   *   2   =   8   ,   结果减   1   =   7.  
  后减(--)优先级低,运算最后完成.   

 

其实还有一点需要注意的是,编译器的执行顺序.在gcc中是总右往左执行 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics