我有这样的声明:
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!
接近,但是++
(后自增)的优先级高于一元*
,所以它首先发生。操作顺序为:
- 后期增量
local_stack_var2
以便它增加 1,但表达式的计算结果为原始值,而不是增加后的值
- 取消引用原始值
- add
42
通过取消引用上述原始值获得的值
- 返回该值
所以在代码中,它会是like(不精确,但接近)
int* temp = local_stack_var2;
local_stack_var2 = local_stack_var2 + 1;
int retval = *temp;
reval = retval + 42;
return retval;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)