1

次のコード セグメントの出力を見つけるように依頼されました。どの表現についても、先生から右から左に評価するように言われました。

    #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になりました。

私は本当にどの方向に評価することになっていますか?両方のケースが一致しないのはなぜですか?

4

0 に答える 0