do ... while(1); while(1) ... for(;;) ... are all widely-used idioms for unconditional looping in C. I personally prefer the latter, but the choice is just a matter of taste. Any reasonable compiler will generate efficient code for all three constructs.