C Programming - Control Instructions - Discussion

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

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

Discussion:
59 comments Page 2 of 6.

Vishal Naik said:   1 decade ago
Do it manually for a shorter number, ex while(j <= 3), you will get the answer as 3. Similarly when while(j <= 255), Answer is 255.

Ashish said:   1 decade ago
Since the int is 2 bytes here, wouldn't it become zero and the loop continue indefinitely. Please Help to clear this doubt.

Ankit jain said:   1 decade ago
%c will print the character according to ASCII values and %d print the corresponding number.

Ritesh yadav said:   1 decade ago
Do it for j<=60, you will find difference. Actually %c shows ascii characters and %d is a decimal value of it. But I am still confused for j<=255, whether this loop will be executed infinite or 255 times only.

Akash said:   1 decade ago
I can't understand because of %c and j two times print.

Nantu said:   1 decade ago
#include<stdio.h>
int main()
{
char result[50];
float num = 23.34;
sprintf(result, "%f", num);
printf("\n The string for the num is %s", result);
getchar();
}

This program shows an error output too large. Can anyone tell me why this error is occuring?

Murugesan said:   1 decade ago
@ Rahul & Nantu.

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

#include<stdio.h>
#include<string.h>
void main()
{
char result[50];
float num = 23.34;
sprintf(result, "%f", num);
printf("\n The string for the num is %s", result);
getchar();
}

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.

Manu said:   1 decade 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.

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

Ptuan said:   1 decade 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.


Post your comments here:

Your comments will be displayed after verification.