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)
谢谢!
关闭,但++(后增量)的优先级高于一元*,所以首先发生.操作顺序如下:
local_stack_var2以使其递增1但表达式求值为原始值,而不是递增值42通过解除引用上述原始值获得的内容所以在代码中,它就像(不精确,但接近)
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)