【发布时间】:2022-01-19 22:21:57
【问题描述】:
这段代码怎么来的
#include <stdio.h>
int main(){
int y=42;
int *p=&y;
(*p)++;
printf("%d\n",*p);
return 0;
}
按预期输出 43,但是这段代码
#include <stdio.h>
int main(){
int y=42;
int *p=&y;
printf("%d\n",(*p)++);
return 0;
}
输出 42?
【问题讨论】:
-
你知道为什么叫post-increment吗?
-
@EugeneSh。因为 ++ 在应用运算符的表达式之后?
-
你试过
printf("%d\n", ++*p);吗? -
@CostantinoGrana 我会说视觉表现暗示了它的运作方式,而且绝对是次要的(虽然不确定这是否是讽刺评论)。
-
@EugeneSh。我应该用一个????。我显然是在开玩笑。
标签: c pointers memory-address