среда, 18 августа 2010 г.

Fun 'operator' в C++

Нашел интересную запись цикла:
#include <stdio.h>

int main(int argc,char** argv)
{
  int x = 10;
     while( x --> 0 ) // эквивалентно for(x=9;x>=0;x--)
     {
       printf("%d ", x);
     }
  x = 10;
     while( 0 <-- x ) // эквивалентно for(x=9;x>0;--x)
     {
       printf("%d ", x);
     }
  return 0;
}
Заметим что во втором случае обратная запись такого якобы 'оператора' --> не эквивалентна первой. В первом случае сначала происходит сравнение, потом декремент (постфиксная запись декремента). Во втором случае префиксный оператор декремента выполнится раньше чем оператор сравнения, и поэтому 0 мы не достигнем.

Взято с StackOverflow

Комментариев нет:

Отправить комментарий