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

2024-01-24

我有这样的声明:

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;

Thanks!


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

  1. 后期增量local_stack_var2以便它增加 1,但表达式的计算结果为原始值,而不是增加后的值
  2. 取消引用原始值
  3. add 42通过取消引用上述原始值获得的值
  4. 返回该值

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

int* temp = local_stack_var2;
local_stack_var2 = local_stack_var2 + 1;
int retval = *temp;
reval = retval + 42;
return retval;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 中的运算符优先级 - 返回值 的相关文章

随机推荐