for (;;) {
//Something to be done repeatedly
}
Często widziałem takie rzeczy, ale myślę, że jest to raczej dziwne… Czy nie byłoby o wiele jaśniej powiedzieć while(true)
, czy coś w tym stylu?
Zgaduję, że (co jest powodem, dla którego wielu programistów ucieka się do tajemniczego kodu) jest to niewielki margines szybciej?
Dlaczego i czy naprawdę warto? Jeśli tak, dlaczego nie zdefiniować tego w ten sposób:
#define while(true) for(;;)
Zobacz także: Co jest szybsze: while (1) czy while (2)?
TRUE
ma wspólnego z C? Standardowe makro dla prawdziwego wyniku boolen w C99 jest nadal true
. Skąd się wziął TRUE
?
#define while(TRUE)
deklarowania makra, które przyjmuje jeden argument, TRUE
który nigdy nie jest używany, a zatem zamienia każdą pojedynczą pętlę while w programie w nieskończoną pętlę?
TRUE
pochodzi z plików nagłówkowych powiązanych z Windows API. Nie jest w żaden sposób powiązany z VS 6.0. I, jak powiedziałem wcześniej, nie ma to nic wspólnego ani z C, ani z C ++. W C ++ „prawdziwy” literał to po prostu true
(również w VS 6.0), w C89 / 90 w ogóle czegoś takiego nie ma, aw C99 jest to makro true
. Dotyczy to wszystkich kompilatorów C / C ++.
TRUE
???