【发布时间】:2013-09-17 08:56:12
【问题描述】:
有人可以解释为什么这段代码输出2 1,我认为应该在 printf 指令之后应用后增量。
#include <stdio.h>
int main() {
int i=1;
int *p=&i;
printf("%d %d\n", *p ,i++);
return 0;
}
【问题讨论】:
-
这个问题就像一个恶魔。采取所有形式,每天都来! :)
-
这可能是有原因的?
-
@KingsIndian usually it is good to have multiple versions of the same question 他们经常被问到 b/c 这是不直观的结果。
-
@zubergu 我不希望每个人都知道规则。但这并不意味着这不是重复的。这个例子很容易理解,大多数 C 标记的用户可以很容易地识别它。我不认为每一个细微的变化:不同的变量名称,发生在 printf/其他函数调用中,等等都是不同的问题。我不敢相信你声称这不是那个的副本。仅仅因为它没有 `printf("%d %d\n", i ,i++);` 就意味着它不是一个 dup。有问题的 printf() 语句完全相同。
-
&KingsIndian 如果你知道它是重复的,我只是声称它是重复的。这是我想避免的重言式。
标签: c pointers printf post-increment