Acr*_*ear 2 c operator-precedence
我无法通过引用获得简单的传递,以我期望的方式工作.拳头关闭,当我编译时,我得到以下警告:
warning: value computed is not used [-Wunused-value]
Run Code Online (Sandbox Code Playgroud)
其次,我希望在程序结束时打印2,而不是1.
$ ./testAdd
1
Run Code Online (Sandbox Code Playgroud)
这是简单的代码:
#include <stdio.h>
void addone(int *j) {
*j++;
}
int main(int argc, char *argv[])
{
int i = 1;
addone(&i);
printf("%d\n", i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这里出了什么问题?
运算符优先级.增量运算符比解引用运算符绑定得更紧密,因此您的代码在语义上等效于:
*(j++) // invalid read BTW
Run Code Online (Sandbox Code Playgroud)
什么时候想要
(*j)++
Run Code Online (Sandbox Code Playgroud)
另请注意,C没有通过引用传递的概念; 一切都是通过价值.您按值传递地址.间接!=通过引用传递.
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |