c - K&R 中第 132 页的运算符优先级
问题描述
我正在阅读 K&R,我被困在下面的句子中。
*p -> str++
在访问它指向的任何内容后递增 str (就像*s++
)
我同意它所说的*p -> str++
,但是对于 *s++
我来说,这没有任何意义。我认为
*s++
将在递增 s 之后访问它指向的任何内容,就像(*s)++
解决方案
->
和后缀都比, 具有从左到右的关联性++
更高的优先级。*
该表达式*p->str++
首先可以读为*(p->str)++
,这使得语义上与 相同*s++
,而后者又可以读为*(s++)
。所以是的,间接将在增量( )之后expr++
发生,但是
后缀递增和递减运算符的结果是 expr 的值。
因此,
p->str
, 或s
, 产生一个适用于(本例中的指针类型)的可修改左值。++
++
(后缀)然后就地递增这个值,计算为递增前表达式的值。*
对此指针值执行间接操作。
然而,将在增加结果值之前(*s)++
执行间接操作。
推荐阅读
- xcode - Xcode 服务器机器人错误“触发器以非零状态 2 退出”
- javascript - Cannot read property of 'onOverviewChange' of undefined
- ios - 如何在反应原生 IOS 中运行一次 GIF?
- django - 加快django rest框架模板渲染性能
- c# - 带有约束的 C# 模板
- python-3.x - 根据特定列年龄从数据框中获取所有唯一行并删除所选行
- javascript - 当 HTML 下拉菜单上的系统下拉菜单变得可见或模糊时,是否会调用任何操作?
- java - Collections.sort() 在编译时显示错误,而 TreeSet 中的 add() 方法在运行时显示
- html - 菜单链接未在 wordpress 的新页面中打开
- python - 熊猫从时间戳创建新的分类列