【发布时间】:2017-10-07 15:51:08
【问题描述】:
如果我们有
int i = 5; /*line 1*/
int *p = &i; /*line 2*/
*p++; /*line 3*/
第 3 行的评估顺序是什么? (我知道在这个 p 之后可能会指向一些奇怪的东西 - 但我对正确的内存寻址不感兴趣,但对评估顺序不感兴趣,因为 * 和 ++ 似乎具有相同的优先级)
【问题讨论】:
-
不,它们的优先级不同。后缀形式 ++ 的优先级高于 *,与前缀形式不同。
-
记住
++递增指针的简单方法是注意通常的单行strcpy 实现:while(*dst++ = *src++);如果++递增实际字符而不是指针,则会失败。跨度> -
运算符优先级是discoverable thing。
-
@OliverCharlesworth 我使用了“C 编程语言”(K&R 第 48 页)中的优先表,其中 * 和 ++ 位于同一行。
标签: c operator-precedence postfix-operator