I’ve come across a situation like this a few times:
while (true) {
while (age == 5); //What does this semi-colon indicate?
//Code
//Code
//Code
}
The while(true) indicates that this is an infinite loop, but I have trouble understanding what the semi-colon after the while condition accomplishes, isn’t it equivalent to this?:
while (age == 5) { }
//Code
//Code
In other words, does it mean that the while loop is useless as it never enters the block?
is equivalent to
Update: Even if there is no body to execute, doesn’t mean that the loop terminates. Instead it will simply loop repeatedly over the conditional (which may have or rely upon side-effects) until it is satisfied. Here is the equivalent form with a
goto:This construct is sometimes used as a busy-loop waiting on a flag to be changed in threaded code. (The exact use and validity varies a good bit by language, algorithm, and execution environment.)
I find the use of
;for an“empty block”empty statement a questionable construct to use because of issues like this:(I have seen this bug several times before, when new code was added.)
Happy coding.