`
heiheben
  • 浏览: 137323 次
  • 性别: 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中是总右往左执行 

 

分享到:
评论

相关推荐

    程序学习积累

    例如,在给定的代码段中,`if (++a &gt; 0 || ++b &gt; 0)`,如果`a`已经大于0,`b`的自增就不会发生。 方括号`[]`在定义数组时是语法的一部分,而在其他情况下作为索引访问运算符,如`a[i]`等价于`*(a+i)`。指针运算中,...

    深信服+面试题+往年.docx

    17. 运算符重载:自增自减运算符重载,前自增和后自增的区别在于返回值类型和操作时机。 18. 模板:用于创建泛型代码,适用于不同类型的数据。 19. 数据结构与算法: - 链表操作:不带头结点的链表操作需要注意头...

    历年四川省计算机二级C等级考试试题\笔试题\C语言(21次).doc

    - **自增自减运算符**:`m++` 和 `m--` 在不同位置有不同的作用时机,会影响到表达式的求值顺序。 - **三目运算符**:在 C 语言中,`a&gt;c?a:c?d=a&gt;b:b` 优先级较低的操作符先计算,然后根据条件执行相应的操作。 -...

    避免C语言在教学中陷阱.pdf

    例如,“++x++”是不合法的,因为它同时试图在两个不同的时机对x进行自增操作。在教学中,应强调书写清晰的代码,明确每个运算符的作用时机,避免使用连续的递增或递减运算符,以免造成混淆和逻辑错误。 2. 取地址...

    More Effective C++

    - 自增和自减操作符有两种形式:前缀形式(如`++x`)和后缀形式(如`x++`)。 - 前缀形式会先增加或减少变量的值,然后返回新的值;而后缀形式则会先返回原来的值,然后再增加或减少。 - 使用哪种形式取决于具体...

    C语言的入门及提高篇,包含入门知识和算法

    表达式中,赋值表达式的值为最左边的值,自增自减运算符(++和--)有前置和后置之分,影响值的使用时机。逗号表达式中,值为最后一个子表达式的结果。 位运算在C语言中用于直接操作二进制位,例如左移()表示乘以2...

    More Effective C++ 简体中文版(pdf 版).pdf

    - 自增和自减操作符有两种形式:前缀形式 (`++x`) 和后缀形式 (`x++`)。 - 前缀形式先递增或递减变量的值,然后再返回新的值;而后缀形式先返回原始值,再进行递增或递减。 - **Item 7:不要重载“&&”,“||”,或...

    计算机二级c语言机考试题库.docx

    - **题目**: C 语言中, 数组名是一个不可变的什么量, 不能对它进行加减和赋值运算? - **解析**: 此题考查数组名的概念。 - 在C语言中, 数组名是一个不可变的地址。 - 数组名指向数组的第一个元素的地址, 不可修改...

    scjp题库java题库

    - `++` 和 `--` 运算符用于自增或自减,可以放在变量前表示先进行运算再使用结果,放在变量后表示先使用变量的值再进行运算。 ### 3. 接口与多态 **题目解析:** 第5题涉及接口、类实现接口以及多态的概念: ```...

Global site tag (gtag.js) - Google Analytics