gpt4 book ai didi

c - 为什么 j = --*p++ 最终将 2 赋给 j?

转载 作者:行者123 更新时间:2023-11-30 21:06:19 24 4
gpt4 key购买 nike

#include <stdio.h>

int main()
{
int i[ ] = {3, 5};
int *p = i;
int j = --*p++;

printf("j = %d\n\n", j);

return 0;
}

有人可以向我解释为什么答案是“j = 2”吗?

此代码来自类(class)笔记本;他们在书中没有解释。

最佳答案

此行为可以描述为运算符优先级,它与 C 编译器处理代码的方式有关。在这种情况下,后缀的 ++ 运算符优先于 * 运算符,并在您递减该值之后递增指向数组的指针。带有前缀 -- 的解引用指针,可以肯定地说它的写法类似:

int main()
{
int i[ ] = {3, 5};
int *p = i;
int j = --(*p++);

printf("j = %d\n\n", j);

return 0;
}

引用文献:

关于c - 为什么 j = --*p++ 最终将 2 赋给 j?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49467704/

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