C Programming - Control Instructions - Discussion

Discussion Forum : Control Instructions - Find Output of Program (Q.No. 13)
13.
What will be the output of the program?
#include<stdio.h>
int main()
{
    int x=1, y=1;
    for(; y; printf("%d %d\n", x, y))
    {
        y = x++ <= 5;
    }
    printf("\n");
    return 0;
}
2 1
3 1
4 1
5 1
6 1
7 0
2 1
3 1
4 1
5 1
6 1
2 1
3 1
4 1
5 1
2 2
3 3
4 4
5 5
Answer: Option
Explanation:
No answer description is available. Let's discuss.
Discussion:
46 comments Page 5 of 5.

Yash said:   1 decade ago
At first when x=1 and y=1 then the for loop condition is true then why there is no 1 1 in the output. I think in the result there is also 1 1 there.

I think the result will be :
1 1
2 1
3 1
4 1
5 1
6 1
7 0

Why the result is not like that? Please explain.

Ranjana said:   1 decade ago
Because x got post incremented at each step.

Pavani said:   1 decade ago
Incremented x value must be less than 5. How could it become 6 and x?

Shankra said:   1 decade ago
Thanks panchanana raut.

Ggf said:   1 decade ago
@yash.

You are wrong as per for loop rule first initialize then condition check then move over increment.

Teja said:   1 decade ago
@pavani.
Incremented x value must be <=5 and we are using post increment. So before executing inc/dec in for loop body will be executed first.


Post your comments here:

Your comments will be displayed after verification.