C语言中指针和自增运算符结合时的运算顺序问题
来源:互联网 发布:电脑截动图用什么软件 编辑:程序博客网 时间:2024/05/16 07:56
转载自: http://blog.csdn.net/xingjiarong/article/details/47071225
在C语言中,当指针运算符和++或者–结合时很容易分不清运算顺序,在这里总结一下,下面一共分析6中组合: * p++,(* p)++,* (p++),++* p,++( * p), * (++p)。
先看段代码以及输出:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
输出结果是这样的:
第一组:*p++,它的运算顺序是先返回 *p的值,然后p再++。
第二组:(*p)++,他的运算顺序是先返回 *p的值,然后 *p的值再++,这一点从运算后的数组a的值可以看出来。
第三组:*(p++),运算顺序是先返回 *p的值,然后p再++,也就是说它和 *p++的运算顺序一样。
这三组都是先返回 *p的值,区别就在于到底是p++还是 *p的值++。
第四组:++*p,先将 *p的值++,然后再返回 *p的值。
第五组:++(*p),先将 *p的值++,然后再返回 *p的值,所以它和++ *p是一样的。
第六组: * (++p),先将p的值++,然后再返回 * p的值,和 *++p是等价的。
这三组的特点是最后都是返回 *p的值,不同点在于是 *p先++还是p++。
阅读全文
0 0
- C语言中指针和自增运算符结合时的运算顺序问题
- C语言中指针和自增运算符结合时的运算顺序问题
- C语言中指针和自增运算符结合时的运算顺序问题
- C语言中指针的自增运算总结
- C语言杂谈(二)自增运算符++与间接访问运算符*的结合关系和应用模式
- c语言中运算符的优先级和求值顺序
- C语言自增、自减运算符使用中应注意的问题 王红
- C语言中自增运算符的解析
- C语言中++自增运算符后置时的使用说明(附C语言运算符优先级表)
- C语言中三目运算符的结合性问题
- C语言运算符和结合性
- C语言中运算符的结合性
- C语言运算符的优先级和结合
- C语言运算符的优先级和结合性一览表
- C语言运算符的优先级和结合性
- c语言运算符的优先级和结合性
- C语言运算符的优先级和结合性一览表
- C语言运算符的优先级和结合性一览表
- SpingMvc详解
- 463. Island Perimeter
- Spark2.0-RDD分区原理分析
- 栈的链接存储结构及实现
- 【qt】程序忙碌时的进度条
- C语言中指针和自增运算符结合时的运算顺序问题
- Python的基础语法
- mysql 数据统计 分区函数
- 面试题19:二叉树的镜像
- PLSQL developer 连接不上64位Oracle 的解决方法
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—G(数论)
- Android Studio 出现 Gradle's dependency cache may be corrupt 错误解决办法
- android monkey测试
- URAL