我是编程初学者,正在尝试一些组合。
#include<stdio.h>
int main()
{
int a=5;
printf("%d",&a); // STATEMENT 1
printf("\n%d",a); //STATEMENT 2
printf("\n%d",&(a++)); //STATEMENT 3
printf("\n%d",a); //STATEMENT 4
return 0;
}
我在 STATMENT 3 中收到一个错误:
[错误] 需要左值作为一元 '&' 操作数
我预计语句 1 和 3 的输出相同,因为两个地址相同。
我还预计 STATMENT 2 的输出为 5,而 STATMENT 4 的输出为 6。
我查了一下,发现了一个类似的问题:左值所需错误
我理解该问题中的问题。从评论到上述问题的第一个答案,我认为左值是可以存储某些内容的东西。
但我仍然不明白为什么 &(a++) 或 &(++a) 应该给出错误。
任何帮助将不胜感激。
谢谢您阅读此篇。
[Edit]谢谢您的回答。如果可能,请包含讨论此类表达式的确切执行顺序或性质的参考文献。
这样像我这样的菜鸟就不会因为这些琐碎的问题而困扰社区了。
a++
增加你的a
并返回old的价值a
. The &
运算符返回变量的地址。但返回的old的价值a
没有地址。这是一个非常临时的事情,而不是左值。这就是为什么你不能获取它的地址。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)