`
yqin
  • 浏览: 58741 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

关于++i和i++与+运算的问题

 
阅读更多

      今天在辅导二级C语言上机时,有同学问我关于(i++)+(i++)+(i++)和(++i)+(++i)+(++i)的问题。这个问题一直是一个麻烦的问题。当时看了一下运行结果,再看看题一下子晕了,我连忙对同学说这个问题我回去好好考虑一下,还从学生那里把题目抄了一下。(真是汗颜啊!)中午吃饭的时候和同学讨论这题,JHH同学的一句话使我茅塞顿开,晚上来到实验室就开始琢磨这题,经过一番思考,终于有了一些眉目了,现将我的理解解释如下(如有不正确的地方请指正)

  

      当i=1时,(i++)+(i++)+(i++)三个++都是后缀形式,就相当于i+i+i后i自增三次,最后(i++)+(i++)+(i++)=3,i=4;

      当i=1时,(++i)+(++i)+(++i)三个++都是前缀形式,先进行前两个(++i)的运算,(++i)+(++i)运算第一个(++i)后i=2,运算第二个(++i)后i=3。(++i)+(++i)=3+3=6,(++i)+(++i)+(++i)变为6+(++i),此时i=3。++i是前缀形式所以在执行+运算符之前i要自加一变为4,6+4=10,最后(++i)+(++i)+(++i)=10;

      当i=1时,(i++)+(++i)+(i++)中有前缀形式的也有后缀形式的,先进行前缀形式的运算,所以首先运算((++i),运算后i=2,然后进行(i++)+(++i)的运算,此时i=2,(i++)+(++i)=2+2=4。(i++)+(++i)+(i++)变为4+(i++),由于i++是后缀形式的,所以先进行+运算4+(i++)=4+2=6,运算完后再运算(i++)两次,最后i=4,(i++)+(++i)+(i++)=6;

 

      总结:当i++和++i与+运算时,从左向右进行运算。当i++参与+运算时,取i自加1之前的值进行+运算。当++i参与+运算时,取i自加1之后的值进行+运算。 

         

 

1
1
分享到:
评论
3 楼 dch1287 2009-11-09  
你的总结是错误的哦
1. 表达式求职肯定从左往右(不存在先++i,然后+,然后i++之说)
2. (i++)的值是i之前的值,同时i增了1
3. (++i)的值是i之后的值,同时i增了1
2 楼 yqin 2009-11-08  
wocsok 写道
你再好好想想对劲儿么?   想不通用机器算下   

i++ 也好  ++i也好   有变化的是表达式的结果   但是i最后只与几个元素相加有关  比如  (i++)+(++i)+(++i)+(i++)这四个 你位置随便换 结果i就是5   ++i是在运算前i自加了一  i++是运算之后i自加一   

(i++)+(++i)+(i++)最后i的值为4,我昨天写成了3,不好意思。
1 楼 wocsok 2009-11-08  
你再好好想想对劲儿么?   想不通用机器算下   

i++ 也好  ++i也好   有变化的是表达式的结果   但是i最后只与几个元素相加有关  比如  (i++)+(++i)+(++i)+(i++)这四个 你位置随便换 结果i就是5   ++i是在运算前i自加了一  i++是运算之后i自加一   

相关推荐

    关于C语言中++运算的讨论

    它可以放在变量之前(前缀,如`++i`)或之后(后缀,如`i++`),这两种形式有不同的行为和语义。在分析给定的程序例子时,我们需要理解C语言的运算符优先级和结合性。 例1程序: ```c int i=2,l; k= i ++ + i++ +i+...

    关于前++(--)和后++(--)运算的理解

    关于前++(--)和后++(--)运算的理解,这一主题深入探讨了C/C++编程语言中的递增(++)和递减(--)运算符的特性,特别是它们的前缀和后缀形式如何影响变量的值以及表达式的计算过程。在给定的示例中,我们通过一段...

    快速区分一元运算符i++和++i.docx

    与后置自增不同,`++i`在运算之前就将`i`的值增加1,然后再用更新后的值参与运算。所以,如果`i`同样是5,`sum = sum + ++i`中的`++i`会先将`i`的值增加到6,然后将6赋值给`sum`。 在给定的例子中,通过一系列的...

    Java中i++与++i的区别和使用

    Java中i++与++i的区别和使用 Java 中的 i++ 和 ++i 是两个常用的操作符,它们都是对变量进行加 1 或减 1 的操作,但是它们的执行顺序和结果却有着很大的区别。 首先,让我们来了解一下 i++ 和 ++i 的定义。i++ 是...

    C语言中++和--运算的一些问题

    #### 三、自加与自减运算符的运算规则 1. **前缀与后缀的区别**: - 前缀形式(如 `++i`): 先自加/自减,再使用。 - 后缀形式(如 `i++`): 先使用,再自加/自减。 举例说明: - 如果 `i = 3`, 那么: - `j = ...

    T9+运算板维修指导

    T9+运算板的信号走向示意图可以分为四个部分:CLK信号流向、TX(CI、CO)信号流向、RX(RI、RO)信号流向和B(BI、BO)信号流向。每个信号流向都有其特定的电压和阻值。在维修过程中,需要注意测量电压和阻值的结果,以...

    visualDSP++实现矩阵运算a*b+c*d并且应用C与汇编的调用

    在本文中,我们将深入探讨如何使用VisualDSP++来实现矩阵运算a*b+c*d,并结合C语言与汇编语言调用来优化性能。VisualDSP++是一种强大的开发环境,特别适合于数字信号处理(DSP)相关的计算密集型任务,如矩阵运算。 ...

    关于短路运算,关于短路运算

    ### 关于短路运算 在计算机编程中,短路运算是指在进行逻辑运算时,如果能够通过计算第一个操作数就能确定最终结果,则不会去计算第二个操作数的一种优化手段。这种优化可以避免不必要的计算,特别是在处理可能抛出...

    T9+运算板维修指导.rar

    通过这些案例,读者可以学习到具体的维修策略和问题解决思路。 7. **预防性维护**:为了减少故障的发生,教程还可能涵盖预防性维护的内容,如定期清洁、正确存储、合理使用和定期检查更新。这些习惯能有效延长运算...

    L3+运算板维修指导

    3. 更换芯片时注意作业手法,更换任何配件后 PCB 板无明显变形,检查更换零件和周边有无少件开路短路问题。 4. 确定维修工位对象与相应测试软件参数、测试冶具。 5. 检查工具,冶具是否能正常工作 原理与结构 1. ...

    C++小知识:用++i替代i++

    前自增运算符(++i)和后自增运算符(i++)都是用于增量运算的,但是它们的区别在于它们的实现机制。前自增运算符改变了对象的状态并返回对象改变后的状态,不需要创建临时对象。后自增运算符也改变了对象的状态,...

    java代码-int i = 0; int s = (++i)+(i--)+i; System.out.println(s);

    这段代码展示了如何在单行中使用这些操作符来影响变量`i`的值,并将其与其他运算相结合以计算一个整数值`s`。在深入讨论之前,先简单回顾一下这些概念: 1. 预增操作符(++i):这个操作符首先将变量`i`的值增加1,...

    离散数学集合运算C++或C语言实验报告.pdf

    将数组 E 中的元素逐一与数组 A 中的元素进行比较,把不相同的元素保存到数组 C 中,数组 C 便是集合 A 关于集合 E 的补集。 C 语言算法: ```c k=0; for (i=0;i;i++) { for (j=0;j;j++) { if (B[i]==A[j]) ...

    关于++--操作符的隐含问题

    为了避免这种由于编译器执行顺序引起的不确定性,推荐的做法是将++和--操作符单独写成一条语句,不要将它们与赋值、算术运算混合使用。 同样的隐含问题也会出现在--操作符上。无论是自增还是自减,都应当注意其使用...

    复数四则运算

    复数四则运算程序设计 ...通过本节实验,我们学习了复数四则运算的概念和实现方法,并掌握了 C++ 语言中的 switch 语句和复数运算。在实验中,我们也遇到了困难和错误,但通过不懈的努力和学习,最终取得了成功。

    基于i_p_i_q运算方式的双滤波谐波检测方法

    该方法首先通过一个锁相环和正、余弦发生电路获得与电源电压同相位的正弦信号\( \sin\omega t \)和对应的余弦信号\( \cos\omega t \),接着与三相电流\( i_a \), \( i_b \), \( i_c \)一起计算出\( i_p \)和\( i_q \...

    一个经验++

    文章内容涉及到的是C/C++编程中关于递增运算符"++"的使用和其运算顺序的问题。在C/C++中,递增运算符有两个形式:前置递增"++i"和后置递增"i++"。这两个形式的行为有所不同,这在处理表达式时可能导致不同的结果。 ...

    复数运算问题 简单的C语言练习

    根据给定的文件标题“复数运算问题 简单的C语言练习”以及描述“复数运算问题 简单的C语言练习 可以作为刚学C语言同学的练习”,我们可以看出这是一个关于复数运算的基础性练习程序,旨在帮助初学者掌握C语言中的...

    复数四则运算(利用C++的复数库实现复数的各种数学运算)

    ### 复数四则运算与C++复数库的应用 #### 概述 在计算机科学领域,特别是数学计算和工程应用中,复数运算是一项重要的技术。本文将介绍如何使用C++标准库中的`<complex>`头文件进行复数运算,并通过一个具体的示例...

    C#有关矩阵运算

    矩阵运算是 C# 编程中的一种重要操作,掌握矩阵运算可以帮助开发者更好地解决问题。通过本文,我们了解了 C# 中的矩阵运算,包括矩阵相乘、矩阵转置、矩阵求逆等操作。这些知识点将帮助开发者更好地理解和应用矩阵...

Global site tag (gtag.js) - Google Analytics