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

lor*_*ara 5 c return operators operator-precedence

我有这样的声明:

return *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;
Run Code Online (Sandbox Code Playgroud)

谢谢!

Set*_*gie 8

关闭,但++(后增量)的优先级高于一元*,所以首先发生.操作顺序如下:

  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;
Run Code Online (Sandbox Code Playgroud)