C Programming - Control Instructions - Discussion

Discussion Forum : Control Instructions - General Questions (Q.No. 2)
How many times the while loop will get executed if a short int is 2 byte wide?
int main()
    int j=1;
    while(j <= 255)
        printf("%c %d\n", j, j);
    return 0;
Infinite times
255 times
256 times
254 times
Answer: Option

The while(j <= 255) loop will get executed 255 times. The size short int(2 byte wide) does not affect the while() loop.

59 comments Page 2 of 6.

Pankaj said:   8 years ago
Its signed so how 255 could be the answer?

Abhishek said:   8 years ago
char i;

I want to ask that after 255. What will happen? It will go to 0 and continue to run from 1, 2 or will run infinite times?

Amol wavare said:   8 years ago
Answer is finite times. How it will be 256>255?

Amandeep Kaur said:   8 years ago
Answer is infinite times, how it will be execute 255 times?

DEEPak said:   8 years ago
In question 1, while loop will execute 256 times. 1 time also for false condition. But the body will execute only 255 times only.

Ahmedation said:   8 years ago
It will be infinite number of loops truly but if only the variable type was signed/unsigned char.

Ptuan said:   9 years ago
Short int is the signed int and it usually used as "int".

Default of system declare "int" has 4 byte. But the question declare short int has 2 byte wide, so the range from: -2^8 -> 2^8 - 1.

This mean j only from: -256 -> 255.

So the while loop will be repeat infinite times. Be cause it's never has value 256 to break the loop.

When counter from j = 1 to j=255; j++ will be: j = -256, and the loop continue. Program will never be exit.

I'm got this experience when I'm test Pascal program in high school. So please think about this carefully.

Mukesh Kumar said:   9 years ago
What is the use of and meaning of "short int" here can anybody explain me?

Manu said:   9 years ago
Hai friends some of you are telling the answer as 225 how you people got that I can't will you explain me. Because am confused in that.

Anyone help me for that.

Murugesan said:   10 years ago
@ Rahul & Nantu.

Your program will execute without error if you change like below,

void main()
char result[50];
float num = 23.34;
sprintf(result, "%f", num);
printf("\n The string for the num is %s", result);

In your program you wanted to convert the float value to string [sprintf(result, "%f", num);]

So you have to include "string.h" header file.

If you are not give return type [return 0;] means you should mention void in main function instead of int main.

Hope you understand.

Post your comments here:

Your comments will be displayed after verification.