This is equivalent to an endless loop, as many others have explained. However, some of them explained why this runs as an endless loop.
Cycle
A for can be broken into three parts:
for(initialization(s); condition(s); looping command(s))
None of these fields are required. Without the stipulated condition, there is nothing to stop the command from starting. This is because the for loop searches for the false operator. Without the provided conditions, nothing is false, so the loop runs indefinitely.
Therefore, for the for loop to be infinite, all you need to do is not provide a condition. This means that it is also a valid infinite loop:
for(int i = 0;; i++) printf("Iteration: %i\n", i);
For ease of reading and so that the second half-bell is not a typo, some programmers could place a space between them or set true as a condition.
Honestly, I prefer while(true) as it is a clear infinite loop. Using while(1) works as well, but '1' is an integer, not a boolean. Although this is equivalent to true , it does not always mean true .
Between these three types of infinite loops, for(;;) has the least number of characters (7). while(1) takes second place with 8 characters, while while(true) takes 11.
I suggest that some programmers prefer low byte counting over the program being read, but I would not recommend using for(;;) . While equivalent, I believe that using while(true) is best practice.