После прочтения Hidden Features и Dark Corners of С++/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);
}
}
Я бы предположил, что это C, так как он работает Visual Studio 2008 и в GCC? Где это определено в стандарте языков и откуда такой оператор взялся?
Этот вопрос, перевод вопроса https://stackoverflow.com/questions/1642028/what-is-the-operator-in-c
--> не является оператором. Это фактически два отдельных оператора, -- и >.
С начало происходит операция -- (минус единица от x) после сравнивание x с 0.
Чтобы лучше понять, выражение можно записать следующим образом:
while( (x--) > 0 )
x может идти до нуля еще быстрее в обратном направлении:
int x = 10;
while( 0 <---- x )
{
printf("%d ", x);
}
результат: 8 6 4 2
Вы можете управлять скоростью со стрелкой!
int x = 100;
while( 0 <-------------------- x )
{
printf("%d ", x);
}
результат: 90 80 70 60 50 40 30 20 10
;)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Как получить arp-таблицу текущего хоста или как найти mac-адрес по ip-адресу с помощью boostasio? Нужно что-то типа SendARP функции, только кроссплатформенной