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

本文通过三个示例详细解析了C++中前置与后置自增(减)运算符的执行时机及其优先级规则,包括表达式的求值顺序、运算符结合方向等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

第一个例子

 

#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中是总右往左执行 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值