C Programming - Control Instructions - Discussion

Discussion Forum : Control Instructions - Find Output of Program (Q.No. 1)
1.
What will be the output of the program?
#include<stdio.h>
int main()
{
    int i=0;
    for(; i<=5; i++);
        printf("%d", i);
    return 0;
}
0, 1, 2, 3, 4, 5
5
1, 2, 3, 4
6
Answer: Option
Explanation:

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'.

Discussion:
21 comments Page 1 of 3.

Hemant Kumar said:   9 years ago
In C when an expression is ended with a semicolon(;) it becomes an statement. But when we put only a semicolon(;), it is called as a NULL statement.

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.
(7)

Sundar said:   1 decade ago
@Arjun Reddy

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!
(1)

Priyanka said:   1 decade ago
@Manish.

What you are thinking is wrong. Because after repeating for the 5th time I satisfies the condition because you have i<=5. So the condition is correct and I will be incremented further and its value become 6. Your assumption is true when the condition is i<5.

Vaibhav said:   1 decade ago
Pay attention towards for loop , there is semicolon at the end of for loop .It means the loop will execute for given condition but control will remain at the same line till the loop get exhausted. Hence when control passes to next line the value of I become 6.

Sri said:   1 decade ago
The for loop in this program has a semi colon at the end of statement means their is no statements in loop to repeat after complition of loop the incremented value is assigned, here I takes 6 and it is displayed.

Ratna Priya said:   8 years ago
Loop is going to 0 to 5 loop satisfied up to 5 then print all the no. When loop doesn't satisfy then the loop will terminate its value.

So, the correct option is A.
(8)

Arjun Reddy said:   1 decade ago
After satisfying everytime the condition of i<=5 for the values i=0,1,2,3,4,5,

It prints the value of i. So answer is A.

Shaswati said:   1 decade ago
Many many many thanks to indiabix for providing an online compiler...its really very much helpful ..thanks a lot

Ayush gupta said:   1 decade ago
Even if you don't initialize i with zero it will print 6. So does for loop initialize loop variable by 0?

Vikash said:   1 decade ago
@Pariyanka.

Value of 'i' will be printed every time when the the loop execute.


Post your comments here:

Your comments will be displayed after verification.