C Programming - Control Instructions - Discussion

Discussion Forum : Control Instructions - Find Output of Program (Q.No. 8)
8.
What will be the output of the program?
#include<stdio.h>
int main()
{
    unsigned int i = 65536; /* 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 = 65536; here variable i becomes '0'(zero). because unsigned int varies from 0 to 65535.

Step 2: while(i != 0) this statement becomes while(0 != 0). Hence the while(FALSE) condition is not satisfied. So, the inside the statements of while loop will not get executed.

Hence there is no output.

Note: Don't forget that the size of int should be 2 bytes. If you run the above program in GCC it may run infinite loop, because in Linux platform the size of the integer is 4 bytes.

Discussion:
16 comments Page 1 of 2.

Vanaja said:   9 years ago
Whether it is 2 byte or 4 in while loop if anything is 0 then it fails right.

So can anyone please tell me the variance of bit system and also I'm thinking the answer would be 0.

Because in the program it checks (i!=0) so (65536!=0) and then it incremented to 0. So now the condition failed and why can't the answer is 0?

please reply me!

Sundar said:   1 decade ago
@Sandeep

Don't forget that the size of int should be 2 bytes. If you run the above program in 32 bit platform, for eg. GCC under Linux, it may run infinite loop, because in Linux platform the size of the integer is 4 bytes.

To test the above program, just use Turbo C, you will understand.

I have tested it in both Turbo C and GCC.

Ritesh tripathi said:   2 years ago
The given answer is wrong because if i=65536.

The loop is run infinitely if you are using a 2-byte compiler the i++.

Is any negative value and it's going infinite.
(2)

Sandeep said:   2 decades ago
I think the answer to this question should be A; because when i run it on code block IDE it went in an infinite loop;

In case i am wrong plz do correct me!

Bhavya said:   7 years ago
I think since the range of unsigned int is 0-65535.

65536 may be taken as 0.
i.e is why there is no output?

If 'm wrong, please correct me.

Sahii said:   5 years ago
@All.

I Run Above Program in Dev-C++, It Going To Infinite Loop.
So, I Think The Answer Is A.

Correct Me,If I Wrong,.
(1)

Ankit said:   5 years ago
I think that the answer is correct due to the 2-byte size of the int, that is why the code shows no output.

Sangram said:   10 years ago
Here in while loop if condition is like while (++i!=0) then answer will be option D i.e. no output.

Raj shamra said:   9 years ago
Yeah. Actually, I run this piece of code in terminal and the output what I get is an infinite loop.

Kiran Kumar Reddy P said:   1 decade ago
When I simulated using gcc in linux. It results into infinite loop printing all the values.


Post your comments here:

Your comments will be displayed after verification.