rae*_*rem -5 c pre-increment post-increment
以下程序的输出不应该是 -
2 3 20
相反,它正在显示
3 2 15
任何人都可以解释这背后的原因吗?
#include<stdio.h>
main()
{
int a[5] = {5,1,15,20,25};
int i,j,m;
i = ++a[1];
j = a[1]++;
m = a[i++];
printf("%d %d %d",i,j,m);
}
Run Code Online (Sandbox Code Playgroud)
3 2 15
是正确的输出.
i是3,因为i在i = ++a[1];预增量中变为2 ,然后在后增加m = a[i++];j 是2,因为j = a[1]++;之后没有变化.m是15,因为m = a[i++]; i正在增加后,旧的价值i(这是2)在索引和对增量后使用i被测序的评价后=声明.话虽如此,推荐的签名main()是int main(int argc, char *argv[])或至少是,int main(void).