+ 1
Can anybody explain how this works?
#include <stdio.h> int main() { int i ; for ( i = 1 ; i <= 5 ; printf ( "\n%d", i ) ) ; i++ ; return 0; }
3 Answers
+ 3
Hey Sri pranavi Donapati ,
The for loop syntax is
for ( initialisation ; condition ; increment/decrement)
{
}
But it is not compulsory to maintain these steps in this format , you can initialize variables before , you can keep variable increment/decrement in body of for loop also.
Here , initialisation is done , then , condition is given , then instead of increment/decrement ; printf() statement is given , so this printf() works 2nd time
(First time)--> i=1 then i is less than 5 so it goes inside and does nothing because if you watch carefully, there is ';' after for(); so it indicates empty statement and does nothing therefore , i value is not increamented
(Second time)--> i again =1 and less than 5 again condition true therefore it keeps on printing i value without increamenting or decrementing
Finally this becomes infinite loop..
Hope you understand..
+ 2
Thank u...these explanations helped.
+ 1
You have an infinite loop there. You don't increase value of <i> in the loop, so the loop condition always evaluates to true (<i> value is 1 eternally).
The semicolon past the for-loop definition tells the compiler that the loop doesn't have a body, so only the second and third part of the loop definition is executed in repetition.
The line `i++;` will never be reached, as the for-loop does not consider that line as part of its loop body, again, this is because of the semicolon past the for-loop definition.