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.

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.

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.

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)

Vinoth M said:   1 decade ago
Thank you sundar very good explanation.

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.

Puspita said:   1 decade ago
Thanks sundar.

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

Manish said:   1 decade ago
This program has been output 5 because increment 5 times.

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.

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?


Post your comments here:

Your comments will be displayed after verification.