GATE CSE
First time here? Checkout the FAQ!
x
+3 votes
74 views

asked in Programming by Active (1.4k points)   | 74 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.

2 Answers

+3 votes
Best answer

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;
}

 

answered by Veteran (48k points)  
selected by
+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.

 

answered by Veteran (16.9k points)  
edited by

Related questions

0 votes
1 answer
2
asked in Programming by Manu FG (21 points)   | 66 views
+4 votes
1 answer
3
asked in Programming by Rohan Mundhey Loyal (4.3k points)   | 83 views


Top Users Jun 2017
  1. Bikram

    3694 Points

  2. Hemant Parihar

    1484 Points

  3. junaid ahmad

    1432 Points

  4. Arnab Bhadra

    1398 Points

  5. Niraj Singh 2

    1311 Points

  6. Rupendra Choudhary

    1194 Points

  7. rahul sharma 5

    1114 Points

  8. Arjun

    930 Points

  9. srestha

    928 Points

  10. Debashish Deka

    896 Points

Monthly Topper: Rs. 500 gift card
Top Users 2017 Jun 19 - 25
  1. Bikram

    1950 Points

  2. Niraj Singh 2

    1306 Points

  3. junaid ahmad

    502 Points

  4. sudsho

    410 Points

  5. akankshadewangan24

    388 Points


23,354 questions
30,065 answers
67,363 comments
28,382 users