94 views

-121. range of character -128 to 127. after 127 , -128 comes and so on. it is cyclic. so add 10 to 127 will give -121

Output would most likely be -121. However, there is a catch. Please check this.

As per C standard, there are three distinct types.

1. a char
2. a signed char
3. an unsigned char

 gcc by default takes plain char as signed char. in a 2's complement machine following things would happen when ever char value exceeds $127$.

• Likewise in the above program, it will print $-121$

The following program will stop for an unsigned char. But loop forever for a signed char

#include <stdio.h>
int main() {
unsigned char c = 0; // loops forever for char c = 0;
while(c < 130) {
printf("hello\n");
c++;
}
return 0;
}

selected
+1 vote

We should know the below concepts before solving this question:-

Concept1:- char c ; means by default signed char c;

Conecpt2:- C Follows 2's Complement representation.

Concept3(Follows from Concept2):-(Imp):- Whatever U store it stored in Binary Number but while retrieval  it gives 2's Complement of Binary Number

So here c=125+10=135

(135)10 = (1000 0111)

So in memory 1000 0111 will store which is binary equivalent of 135

but when we will print char C means ->>( 1000 0111 )it will give us the 2's Complement representation of c which is -121.

Hence -121 is Ans.