c语言 优先级的问题

我觉得a应该等于3呀!... 我觉得a应该等于3呀! 展开
 我来答
鲸鱼过街
2019-02-15 · TA获得超过153个赞
知道答主
回答量:81
采纳率:66%
帮助的人:28.9万
展开全部
第5行:指针ptr指向了变量a的内存地址,这个时候ptr本身储存的是变量a的内存地址,*ptr就是告诉编译器根据这个地址去查找对应的值
第6行:*ptr = 3
改变这个指针指向内存地址的值,画个图你就明白了 *ptr -> a = 3
现在a的值就被改变了,变成了
第7行:a = (*ptr)++
先运算括号内容,*ptr -> a,所以在这里等同于 a = (a)++,表达式实际上表达的是这个意思:a = a++
从右向左运算,a++,再赋值回a。题外话:
a++ 等同于 a = a + 1,运算完后返回a的值;
++a 也等同于 a = a + 1,但是是在运算前返回a的值。
了解了这个之后,再来看 a = a++,首先先给 a + 1,此时 a 的值为4,然后将4赋值给a(变成数学表达式就相当于4=4),所以变量a的最终值是4。
第8行:输出a和*ptr,因为*ptr -> a,所以 *ptr 返回的就是 a 的值,所以答案是4,4
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式