在C#中i=i++值不变的一个解释 几乎每隔一段时间就有人询问i++和++i的区别,这两者之间无非就是前缀和后缀,先执行再+1还是先+1再执行的问题,这没有什么好说的。 前几天看到有人问在C#中,i=i++最后的值还是原值的原因,好些人都在说i++就是先执行再+1,++i就是先+1再执行。诚然这句话是没有错,可是却无法解释i=i++的问题。 至于这一句话,本来就是一句速记的口诀,拿来当原因是没有丝毫意义的。我看了看,有一个解释最好理解,拿来放到这里,以备后观。 i++其实就是: { temp=i; i=i+1; return temp; } ++i就是: { i=i+1; return i; } 以一个具体的例子来看一下: int i=5; int j=i++; Console.WriteLine(j); Console.WriteLine(i); 输出结果5、6.这一个原因谁都知道就不赘言了,关键是下面赋值给自身的例子: int i=5; i=i++; Console.WriteLine(i); 按照常理解释i=i++,先把i的值5赋值给左边,之后i+1后i的值变成6,但是这样的解释显然是不对的,这也是为什么单纯地记住先+1后执行还是先执行后+1这一句话是没有用的了。 下面按照上面说的解释一下: i=i++; { temp=i;//这里将i的值5传递给中间变量temp i=i+1;//这里i变为6 return temp;//返回了中间变量temp,temp的值是5,于是赋值给左边的i,i的值便是5了。 } 当然还有其他的解释,但我感觉都不如这个好理解。于是具体地整理一下,另外再说一句,在实际开发中千万不要写i=i++,这是自己给自己找不自在。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Hywin1020/archive/2009/08/19/4463619.aspx

转载于:https://www.cnblogs.com/dsliang/archive/2011/01/12/1934103.html

C#中i=i++值不变的一个解释相关推荐

  1. 数组[Java](除去一个数组中的某个值并生成一个新数组)

    ** 数组 **[Java](除去一个数组中的某个值并生成一个新数组) 例如:现在有如下的一个数组: int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ; ...

  2. 复制类中的属性值到另一个类的相同属性中

    代码有好多高级代码,现在给大家看一个,就是复制相同属性的值到另一个类. 例如:A类中有String name,int score:B类中有String name ,int score,String s ...

  3. 一个表中的字段值用作另一个表的In查询条件

    Question表与Paper表 Paper表中字段QuestionIds存储的是Question表中字段Id的拼接后的值 如: 'f855eba1-b308-4bd7-a250-c071a0e1bd ...

  4. R语言dplyr包使用anti_join()函数返回在一个dataframe中存在而在另一个dataframe中没有匹配值的所有行实战

    R语言dplyr包使用anti_join()函数返回在一个dataframe中存在而在另一个dataframe中没有匹配值的所有行实战 目录

  5. 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点

    /*实验2 1. 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点 (low和high的值是多少可自由设计).并且要在程序中验证其功能实现. (可在实验1的第3题的基 ...

  6. 动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

     1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_ #include<stdio.h> #include<stdlib.h> /**** ...

  7. Java黑皮书课后题第7章:7.15(消除重复)使用下面的方法头编写方法,消除数组中重复出现的值。编写一个测试程序,读取10个数,调用该方法,并显示以一个空格分隔的不同数字

    7.15(消除重复)使用下面的方法头编写方法,消除数组中重复出现的值.编写一个测试程序,读取10个数,调用该方法,并显示以一个空格分隔的不同数字 题目 题目描述与运行示例 破题 代码 21.11.11 ...

  8. SQL Server 将一个表中字段的值复制到另一个表的字段中

    原文:SQL Server 将一个表中字段的值复制到另一个表的字段中 具体方法如下 一:update 表2 set (要插入的列名)= select 表1.某一列 from 表1 left jion ...

  9. 查询一个表中所有id字段在另一个表中对应值的SQL语句怎么写?

    编辑器加载中... 查询一个表中所有id字段在另一个表中对应值的SQL语句怎么写?多表联结查询:select rbd.RBDID, rbd.ProductCode,p.ProductCnName,p. ...

最新文章

  1. Linux rsync命令详解
  2. 如何阅读一本书 pdf_如何2个小时内快速阅读一本书?
  3. 浏览器检测是否安装flash插件,若没有安装,则弹出安装提示
  4. 面试准备——Struts2相关问题
  5. Android之Handler用法总结(1)
  6. DevExpress.XtraGrid.Views.Grid.GridView 选中行焦点的滚动条的位置
  7. 释放数据价值:DAYU数据运营新能力解读
  8. R plot图片背景设置为透明_学习健明老师发布的R语言练习题的学习笔记(一)...
  9. 依赖注入例子php,依赖注入小例子
  10. 如何排查内存飙升的情况
  11. 计算机处理器性能排名,2019电脑cpu处理器性能排名:AMD 32核撕裂者遥遥领先(2)...
  12. java腾讯云通信生成userSig
  13. 区块链供应链金融实战3
  14. 【web性能】获取web各个阶段响应时间:服务器响应时间、首页白屏时间、dom渲染完成时间等
  15. 微信小程序的设计以及demo
  16. 在苹果 M1 上运行 Linux 虚拟机变得容易了
  17. http状态码有哪些?代表什么意思?(查询手册而已)
  18. 全能型终端神器!好用、免费!
  19. 网络为什么要分层—程序如何工作
  20. 使用Visual Studio Code 进行Python编程(二)-print、if、for的用法

热门文章

  1. No module named 'django.core.urlresolvers
  2. 教你解决ssh连接慢的问题
  3. Linux下的系统排错以及无图形修改root密码
  4. 基于Swift的简易iOS天气APP
  5. java开发paly框架下载_playframework框架笔记
  6. python2.7环境变量的配置_Windows7下python2.7.6环境变量配置
  7. turtle库自动轨迹绘制
  8. 数据:DeFi总锁定价值突破170亿美元
  9. 手把手之stacking|分享集成模型在实际工作中的应用(上)
  10. 安卓开发:用ImageView放上图片后上下有间隙