I was asked to find the output of the following code segments. For any expression I was asked to evaluate form right to left by my teacher.
    #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);
     }
Now if I evaluate line7 from right to left, my output should be:
      20
      30
      40
      40
But if I evaluate from left to right, it will be
      10
      20
      30
      40
On running the program the output was case2.
Here's another one.
          #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);
           }
This time when I evaluated form right to left:
           10
           20
           30
           40
and from left to right:
           10
           10
           10
           10
And on running it I got case 1.
In which direction am I really supposed to evaluate? Why are both cases not matching?
