1、for循环条件中i++与++i的区别
//for循环体语法
for(语句1;语句2;语句3){循环体执行代码块}

语句1是在循环体开始前执行
语句2是定义运行循环体的条件
语句3在循环体 已经被执行之后来执行

根据for循环的语法定义 ,在语句3执行时++i和i++的结果是一样的,都需要等代码块执行完毕之后才能运行语3。++i:执行完代码块后执行i=i+1,此时i的值增加了1;i++:先引用i=i,再执行i=i+1,也相当于执行代码块后实现了i自增1。

性能区别:在大量数据的时候++i的性能要比i++性能要好。i++由于是需要在使用当前值之后再+1,所以会需要一个临时的变量来进行转存。而++i则是直接进行+1的操作,省去了对内存的操作环节,所以能够提高性能。

2、数组中i++与++i的区别
// 有整型数组如下
array[i++]
array[++i]//array[i++]执行次序:先取array[i],后i=i+1
//array++i执行次序:先i=i+1,再取array[i]

区别:array[i++]中i++是后自增,必须先使用数组当前元素的值,再i自增1。因此返回的结果是i对应的数组中的值
array[++i]中++i是前自增,先i自增,再取i自增后的数组中的值。因此返回结果是i自增后对应的数组中的值

3、指针中i++与++i的区别

(1)第一种

*(i++)与*i++//*i++
//等价于*(i++)
//分2步执行:*i; i=i+1;//*(i++)
//分2步执行:*(i); i=i+1;

因此这两种情况等价:先输出指针i在自增前对应的值,然后指针i自增,指针指向下一个地址。返回的结果是i指针自增前对应的值

(2)第二种

*(++i)与*++i//*(++i)
//分两步执行:i=i+1;*(i)//*++i
//等价与*(++i)
//分两步执行:i=i+1;*i

因此这两种情况等价:都先将i自增1,然后与*结合,再取对应地址的值。返回的结果是原i指针指向地址的下一个地址的值

(3)第三种

++*i 与 ++(*i)//++*i
//等价与++(*i)
//分两步执行:*i;然后对其值自增1//++(*i)
//分两步执行:*i;然后对其值自增1

因此这两种情况等价:先取i指针对应的值,然后对值自增1。返回的结果应该是自增后的值

(4)第四种

(*i)++//分两步执行:先取i对应地址的值,再将其值整体自增1

因此这种情况:因为括号结合率最高,因此先取i对应地址的值,再将其值自增1。返回的结果应该是i对应地址的值

注:后缀++与*优先级相同结合率从右至左

c语言中i++与++i的区别相关推荐

  1. c语言中 char怎样用,C语言中char*和char[]用法区别分析

    C语言中char*和char[]用法区别分析 本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很 ...

  2. 浅谈Java语言中ArrayList和HashSet的区别

    Java语言中ArrayList和HashSet的区别 2019-04-10   13:22:49 一.基本区别 首先一起看个实例,其代码如下: package com.MrZ_baby.com; i ...

  3. 实例分析C语言中strlen和sizeof的区别

    C语言文章更新目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分 ...

  4. c语言char有什么作用,C语言中char*和char[]用法区别分析

    本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很大.以下是个人的一些看法,有不正确的地方望指正 ...

  5. java.substr_Java语言中substr和substring的区别

    Java语言中substr和substring的区别 由于在项目中有需要对字符串进行截取,然后手残使用了IDE自动提示的substr,没想那么多以为substr和substring没多大区别. 然而并 ...

  6. c语言中sbit什么意思,c语言中bit和sbit的区别.doc

    c语言中bit和sbit的区别 c语言中bit和sbit的区别?? 1.bit和sbit都是C51扩展的变量类型. ??????? bit和int char之类的差不多,只不过char=8位, bit ...

  7. C语言中*p 和p的区别

    C语言中*p 和p的区别 C语言中,*p 和p都常用在指针当中表示一个指针变量,*p 和p的区别: 表示的含义不同 *p表示此指针指向的内存地址中存放的内容. p表示一个指针变量的名字,指此指针变量所 ...

  8. C语言中union与struct的区别及sizeof的计算方式

    C语言中union与struct的区别 2011-08-02 23:41 45人阅读 评论(0) 收藏 举报 在C语言中结构体和联合具有细微差别,特别是使用sizeof()对其求大小时,许多刚刚接触C ...

  9. c语言put语句的作用,C语言中put()与puts()的区别?

    C语言中put()与puts()的区别? 关注:275  答案:2  mip版 解决时间 2021-02-04 15:47 提问者笑低了眉眼 2021-02-04 12:42 C语言中put()与pu ...

  10. C语言中sbit字节操作方法,c语言中bit和sbit的区别

    c语言中bit和sbit的区别 c语言中bit和sbit的区别: 1.bit和sbit都是C51扩展的变量类型. bit和int char之类的差不多,只不过char=8位, bit=1位而已.都是变 ...

最新文章

  1. Spring Cloud 2020 年路线图:二季度Spring Boot 2.3、四季度Spring Cloud Ilford
  2. 网站推广——网站推广专员是如何对竞争对手网站进行分析总结的?
  3. mysql 路由_mysql 命令大全
  4. 四十九、IQ 与测试评分案例
  5. 弱类型、强类型、动态类型、静态类型语言的区别
  6. java socket 判断Socket连接失效
  7. 【Android】实现页面跳转
  8. linux内核I2C子系统学习(二)
  9. WinCE启动界面的定制
  10. ZBlog菜鸟精致灰黑简约风格MiNi主题
  11. oracle删除临时表空间语句,Oracle中临时表空间的清理
  12. 精妙SQL语句 (笔记)【转】
  13. 2018年13个AI趋势 | CB Insights报告
  14. java 格式化 浮点数_DecimalFormat的用法 Java 浮点数 Float Double 小数 格式化 保留小数位后几位等...
  15. 编程理论 —— 计算图框架
  16. linux lasound.so教程,Linux ALSA 音频系统:逻辑设备篇(示例代码)
  17. hbase put 写入数据慢_HBase运维 | HBase 疑难杂症诊治
  18. 根据IP获取国家地区
  19. 【顺序表】SqList *L是什么意思
  20. 百度笔试题——开发测试工程师(深圳)

热门文章

  1. 实证分析权重系数计算大全
  2. php人民币函数,php人民币小写转大写的函数,不限长度,精确到分(推荐)
  3. krpano资源下载及还原全景图
  4. JS - 笛卡尔积算法
  5. ExtJs自学教程(2):从DOM看EXTJS
  6. 数据库作业:SQL练习3 - SELECT(单表查询)
  7. 循环赛日程表(递归实现)
  8. MATLAB初阶绘图
  9. varchar varchar2异同
  10. 个人项目总结 (By Jun Guo)