【发布时间】:2013-02-27 00:45:27
【问题描述】:
当我阅读 K&R 的 TCPL 时,我只是无法理解两种表达方式:
*p++ = val; /*push val onto stack */
这是我的想法:
-
取消引用和后缀具有相同的优先级,并且关联性是从右到左的,所以
*p++ = val可能和*(p++) = val一样,因为指针通常是到顶部的下一个位置,所以在这段代码中,p因为括号先加1,所以p是当前上面的两个单位顶部,但不是当前顶部上方的一个单位,val 应该在哪里!!!谢谢
【问题讨论】:
-
post-fix 运算符的优先级高于取消引用
*,所以它是先执行的:en.wikipedia.org/wiki/… 和p++将返回当前值进行取消引用,而不是增量值。 -
简而言之,
*p++ = val的意思是:1) 将p引用的变量设置为val2) 然后递增指针p
标签: c operators operator-precedence