C Programming - Control Instructions - Discussion
#include<stdio.h>
int main()
{
int i=0;
for(; i<=5; i++);
printf("%d", i);
return 0;
}
Step 1: int i = 0; here variable i is an integer type and initialized to '0'.
Step 2: for(; i<=5; i++); variable i=0 is already assigned in previous step. The semi-colon at the end of this for loop tells, "there is no more statement is inside the loop".
Loop 1: here i=0, the condition in for(; 0<=5; i++) loop satisfies and then i is incremented by '1'(one)
Loop 2: here i=1, the condition in for(; 1<=5; i++) loop satisfies and then i is incremented by '1'(one)
Loop 3: here i=2, the condition in for(; 2<=5; i++) loop satisfies and then i is incremented by '1'(one)
Loop 4: here i=3, the condition in for(; 3<=5; i++) loop satisfies and then i is increemented by '1'(one)
Loop 5: here i=4, the condition in for(; 4<=5; i++) loop satisfies and then i is incremented by '1'(one)
Loop 6: here i=5, the condition in for(; 5<=5; i++) loop satisfies and then i is incremented by '1'(one)
Loop 7: here i=6, the condition in for(; 6<=5; i++) loop fails and then i is not incremented.
Step 3: printf("%d", i); here the value of i is 6. Hence the output is '6'.
So, the correct option is A.
Explanation to this problem:
Well the statement for(; i<=5; i++); will be treated as
for(; i<=5; i++)
;
or
for(; i<=5; i++)
{
;
}
So when the loop will start it will take the initial value as 0 and it will check the condition(i<=5) as the condition is true it will execute the body of for loop but as it a null statement( ;) it will do nothing and the control will be transferred to the update expression(i++). So repeating the steps until the value of i becomes 6.
Now as i=6 so the condition (i<=5) will return false and the control will jump out of the for loop and the next statement following the for loop will be executed i.e printf("%d", i);
So it will print the value as 6 and then the program will be terminated successfully as it is returning a zero to the int main.
You are wrong. The given answers is correct only.
Please note the semi-colon in the for-loop:
for(; i<=5; i++); // <-- note this semi-colon.
printf("%d,", i); // printf is NOT a part of for-loop, it is next stmt to for-loop.
If you remove that last-semi-colon in the for loop, the it will become like :
for(; i<=5; i++)
printf("%d,", i); // this printf is only the part of for-loop.
Now it will work as you said. The main purpose of this question is to check whether are you able to find the above difference.
Hope this help you. Have a nice day!
It was really helpful.
Value of 'i' will be printed every time when the the loop execute.