我被要求找到以下代码段的输出。对于任何表达,我的老师都要求我从右到左评估表格。
#include<iostream.h>
#include<conio.h>
int main()
{clrscr();
int a[]={10,20,30,40};
for(int i=0;i<3;)
a[i]=a[++i];
for(i=0;i<4;++i)
cout<<a[i]<<endl;
return(0);
}
现在,如果我从右到左评估 line7,我的输出应该是:
20
30
40
40
但如果我从左到右评估,它将是
10
20
30
40
运行程序时,输出为 case2。
这是另一个。
#include<iostream.h>
#include<conio.h>
int main()
{clrscr();
int a[]={10,20,30,40};
for(int i=0;i<3;)
a[++i]=a[i];
for(i=0;i<4;++i)
cout<<a[i]<<endl;
return(0);
}
这次我从右到左评估表格:
10
20
30
40
从左到右:
10
10
10
10
在运行它时,我得到了案例 1。
我真的应该在哪个方向进行评估?为什么两种情况都不匹配?