C Programming - Control Instructions - Discussion

Discussion Forum : Control Instructions - Find Output of Program (Q.No. 4)
4.
What will be the output of the program?
#include<stdio.h>
int main()
{
    unsigned int i = 65535; /* Assume 2 byte integer*/
    while(i++ != 0)
        printf("%d",++i);
    printf("\n");
    return 0;
}
Infinite loop
0 1 2 ... 65535
0 1 2 ... 32767 - 32766 -32765 -1 0
No output
Answer: Option
Explanation:

Here unsigned int size is 2 bytes. It varies from 0,1,2,3, ... to 65535.

Step 1:unsigned int i = 65535;

Step 2:
Loop 1: while(i++ != 0) this statement becomes while(65535 != 0). Hence the while(TRUE) condition is satisfied. Then the printf("%d", ++i); prints '1'(variable 'i' is already incremented by '1' in while statement and now incremented by '1' in printf statement) Loop 2: while(i++ != 0) this statement becomes while(1 != 0). Hence the while(TRUE) condition is satisfied. Then the printf("%d", ++i); prints '3'(variable 'i' is already incremented by '1' in while statement and now incremented by '1' in printf statement)
....
....

The while loop will never stops executing, because variable i will never become '0'(zero). Hence it is an 'Infinite loop'.

Discussion:
17 comments Page 2 of 2.

Bunny said:   9 years ago
The value of "i" will never be zero in while statement because it will always get odd value like
65535, 1, 3, 5, 7.

Sree said:   1 decade ago
On loop 2, before the post increment doesn't I value become zero. Hence terminating the while loop?

Aparna.v said:   1 decade ago
I can understand that this loop runs infinitely but why is it printing 1 2 3 and so on?

Abi said:   1 decade ago
Unsigned integer value is only 65535. How the loop is execute in infinite?

Rachana said:   1 decade ago
i=65535; when incremented value should be 0.

Sapna kumari said:   10 years ago
Please can you clear how i = 1 in output?

Vishwambhar said:   1 decade ago
What happened if I is signed integer.


Post your comments here:

Your comments will be displayed after verification.