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 1 of 6.

Dhanush said:   1 decade ago
@prem.

We are using character only in printf statement. not in condition. in while(j<=255) j is an integer variable. So in printf statemnt for %c it will print from 1,2.....127,-128,-127.....0 so exactly after 255 times of the execution of the loop. The condition fail and loop will be terminated.
(1)

Priya said:   7 years ago
int a;
for(a=1;a<=32767;a++)
printf("%d",a);


Why it results in an infinite loop? Please explain.
(1)

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.

Viplov said:   1 decade ago
J=1 and while (j <= 255).

J start from 1 to 255 and run only 255 times, it goes to 255 because of <= if this sign is only < then it goes to only 1 to 254 and run only 254 times.

Rahul 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?

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.


Post your comments here:

Your comments will be displayed after verification.