我是编程的初学者,正在尝试一些组合.
#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;
}
Run Code Online (Sandbox Code Playgroud)
我在STATEMENT 3中说错了
[错误]左值作为一元'&'操作数需要
我期望STATEMENT 1和3的输出相同,因为两个地址都是相同的.
我还期望STATEMENT 2的输出为5&STATEMENT 4为6.
我抬起头,发现了一个类似的问题:Lvalue需要错误
我在那个问题上理解了这个问题.从评论到上面提到的问题的第一个答案,我认为左值是可以存储某些东西的东西.
但我仍然无法理解为什么&(a ++)或&(++ a)应该给出错误.任何帮助将不胜感激.
谢谢您阅读此篇.
[编辑]感谢您的回答.如果可能的话,请包括参考,其中讨论了这些表达的确切执行顺序或性质.这样,像我这样的新手不会因为这些微不足道的问题而困扰社区.