gpt4 book ai didi

C - 递增和递减指针,然后检索值

转载 作者:行者123 更新时间:2023-12-02 09:23:45 27 4
gpt4 key购买 nike

以下代码将 y 输出为大整数,而不是 15。我不明白为什么。我知道 --++ 运算符位于 * 运算符之前,因此它应该可以工作。

下面的代码想表达什么。

/*
Create a variable, set to 15.
Create a pointer to that variable.
Increment the pointer, into undefined memory space.
Decrement the pointer back where it was,
then return the value of what is there,
and save it into the variable y.
Print y.
*/

int main()
{
int x = 15;
int *test = &x;
test++;
int y = *test--;
printf("%d\n", y);

return 0;
}

如果相反,我将代码更改为以下内容:

int main()
{
int x = 15;
int *test = &x;
test++;
test--;
printf("%d\n", *test);

return 0;
}

该代码输出15。为什么?

最佳答案

区别在于x++++x之间,即指针的后递增和前递增。

  • ++位于x之后时,在增量之前使用旧值
  • ++x之前时,在增量之后使用新值。

这会起作用:

int y = *(--test);

虽然括号不是必需的,但为了清楚起见,最好使用它们。

关于C - 递增和递减指针,然后检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39542126/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com