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