【发布时间】:2014-11-09 09:32:36
【问题描述】:
我遇到了以下程序。
#include<stdio.h>
int main()
{
char *s[] = { "knowledge","is","power"};
char **p;
p = s;
printf("%s ", ++*p);
printf("%s ", *p++);
printf("%s ", ++*p);
return 0;
}
输出:nowledge nowledge s
我确定
1.首先printf打印nowledge
2.Second printf 也打印nowledge,因为它包含一个后增量,因此保留了第一个 printf 的原始值。
现在在这个阶段,我很困惑 *p++ 到底做了什么。现在将 p 指向is 或owledge。
【问题讨论】:
-
我知道输出......但我想知道解释 - @ralph
-
你为什么不阅读一些关于运算符优先级的文档?您应该学习如何做到这一点,以便您可以对代码进行推理。
-
@ralph 你不是通过反复试验来学习的!
标签: c pointers operators operator-precedence