次のコード セグメントの出力を見つけるように依頼されました。どの表現についても、先生から右から左に評価するように言われました。
#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になりました。
私は本当にどの方向に評価することになっていますか?両方のケースが一致しないのはなぜですか?