gpt4 book ai didi

c - C 中的运算符优先级 - 返回值

转载 作者:太空狗 更新时间:2023-10-29 14:57:56 24 4
gpt4 key购买 nike

我有这个声明:

返回 *local_stack_var2++ + 42;

分解时这些是正确的步骤吗:
1. 取消引用 local_stack_var2
2. 将 42 添加到取消引用的 local_stack_var2 (函数实际上会返回此值)
3.函数结束前,会激活后自增,自增local_stack_var2指向的对象的值

所以在代码格式中,它看起来像这样?

int temp = *local_stack_var2 //step 1;  
int returnValue = temp + 42; //step 2, compiler will return THIS value
*local_stack_var2 = *local_stack_var2 + 1; //step 3
return returnValue;

谢谢!

最佳答案

接近,但是 ++(后增量)比一元 * 有更高的优先级,所以它先发生。操作顺序为:

  1. 后递增 local_stack_var2 使其递增 1 但表达式的计算结果为原始值,而不是递增后的值
  2. 取消引用原始值
  3. 42添加到通过取消引用上述原始值获得的内容
  4. 返回那个值

所以在代码中,它会(不精确,但接近)

int* temp = local_stack_var2;
local_stack_var2 = local_stack_var2 + 1;
int retval = *temp;
reval = retval + 42;
return retval;

关于c - C 中的运算符优先级 - 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8379810/

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