Після прочитання прихованих об'єктів і темні кути C ++ / STL на comp.lang.c++.moderated
, я був повністю здивований , що наступний фрагмент коду компілюється і працює як в Visual Studio 2008 і G ++ 4.4.
Ось код:
#include <stdio.h>
int main()
{
int x = 10;
while (x --> 0) // x goes to 0
{
printf("%d ", x);
}
}
Вихід:
9 8 7 6 5 4 3 2 1 0
Я припускаю, що це C, оскільки він працює і в GCC. Звідки це визначено в стандарті і звідки воно взялося?
#define upto ++<
, #define downto -->
. Якщо ви відчуваєте зло, можете зробити #define for while(
і #define do ) {
(і #define done ;}
) і написати for x downto 0 do printf("%d\n", x) done
О, людство ...
++
або--
раніше ...