*++p 和 ++*p 有什么区别?
最近有同学在刷笔试题的时候,遇到这么一个问题。
#include先是一个数组,然后有个指针,赋值是 a + 2,所以 p 指向了元素20。int main() { int array[5] = {0, 10, 20, 30, 40}; int *p = array + 2; printf("%d ", *++p); printf("%d ", ++*p); return 0; }
最后是两个输出语句,就是刚才说的 *++p 和 ++*p。
区别这两个表达式,很多同学会想到优先级,先算什么再算什么,但是因为前置++和后置++本身就有一个先算和后算的问题,再结合优先级,容易乱。
*++p 因为是前置的++,前置的特点就是在执行这条语句之前变量的值加一,所以先进行 p 加一的操作,p 指向了30。
然后再结合星号,取到的值是30。
换一种写法,可能更好理解一些:
p = p + 1; printf("%d ", *p);++*p 也是前置的++,只不过这次加的对象是*p,所以这个地方*p加不加括号结果都一样。
++*p; ++(*p);p指向30,对30加一就变成了31。
两个输出语句,一个输出30,一个输出31。
root@Turbo:test# ./test 30 31 root@Turbo:test#自己写代码的时候,不建议写这样的代码,过于复杂,给别人理解造成困难,有时候换个编译器,可能结果也不一样。
如果把它拆成两行来写,理解起来就会容易得多。
最后,我再加上一行代码,这样写应该输出多少?
#includeint main() { int array[5] = {0, 10, 20, 30, 40}; int *p = array + 2; printf("%d ", *++p); printf("%d ", ++*p); printf("%d ", *p++); return 0; }
审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
printf函数
+关注
关注
0文章
31浏览量
5899 -
Printf
+关注
关注
0文章
83浏览量
13672
原文标题:*++p 和 ++*p
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
ads1292和ads1292R之间有什么区别?
1、导联线连接上,社区内有两种不同的用法,不知有什么区别?见下图
上图是TI评估板上给的
上图是社区内一位大哥给的
对比一下第一张图 IN2P连接到了ELL而第二张图IN2P连接
发表于 12-20 12:56
PHP48_4P9X4P9,PHP48_4P9X4P9-L,PHP48_4P9X4P9-M,这三种封装除了焊盘的长度不同还有什么区别呢?
PHP48_4P9X4P9,PHP48_4P9X4P9-L,PHP48_4P9X4P9-M,这三种封装的区别除了焊盘的长度不同还有什么区别
发表于 11-28 06:34
PCM2912和PCM2912A有什么区别?
我在其代理商买了些PCM2912,芯片上丝印为:P2912AE4 34A57CT G4,请问下和PCM2912A有什么区别?我在其手册上没发现有这后缀
按手册上推荐电路焊了片调试,发现:
按
发表于 10-21 06:47
6p1单端与6p1推挽有区别吗
6P1单端与6P1推挽在电子管功放领域中确实存在显著的区别,这些区别主要体现在电路结构、工作原理、性能特点以及适用场景等方面。以下是对两者的比较: 一、电路结构 6
N沟道场效应管和P沟道场效应管有什么区别
, P-Channel FET)是场效应管(Field Effect Transistor, FET)的两种基本类型,它们在导电机制、极性、驱动电压、导通电阻、噪声特性、温度特性以及应用领域等方面存在显著差异。以下是对这两种场效应管区别的详细阐述:
TC397多核之间数据访问效率有什么区别?本地和全局的效率有什么区别?
TC397多核之间数据访问效率有什么区别,本地和全局的效率有什么区别,可不可以将电机同步ADC采集放到主核0,算法在1核执行
发表于 02-06 07:42
求助,TC275中不同的STEP有什么区别?
TC275中不同的STEP有什么区别?我看了一些芯片有CA-STEP,DB-STEP,DC-STEP这几个step有什么区别呢?或者从哪个手
发表于 02-04 07:34
泰克P6139A和P6139B示波器无源探头有什么区别?
问题 : P6139A和P6139B示波器无源探头有什么区别? 回答 : 从规格角度来看,探头是相同的。两者都是 500 MHz、10X 无源探头。
评论