5.1.2 · HinglishC Programming

Data types — char, short, int, long, float, double, size_t

1,970 words9 min readRead in English

5.1.2 · Coding › C Programming


Data types EXIST kyun karte hain?


Types KYA hain? (woh 20% jo 80% deta hai)


Integer type ki range DERIVE kaise karte hain?

Hum isse first principles se derive karte hain — bit patterns ko count karke.

Unsigned (unsigned char, size_t, …): har pattern ek non-negative value hai. kyun? Kyunki zero slots mein se ek kha leta hai, isliye largest value count se ek kam hoti hai.

Signed (two's complement, jo C practically use karta hai): ek bit ki "weight" ko negative banaya jaata hai taaki hum negatives encode kar sakein. Hum patterns ko negatives aur non-negatives mein split karte hain:

Ye asymmetric kyun hai (positives se ek zyada negative)? Pattern 1000…0 most-negative value ke liye reserved hai; zero positive side par baitha hai, ek positive slot "use kar ke". Isliye tumhe negatives milte hain lekin sirf positives.


float/double ek number kaise store karta hai? (IEEE-754)


size_t kya hai?

Figure — Data types — char, short, int, long, float, double, size_t

Worked example: output predict karo


Active Recall

Recall Quick self-test (answers cover karo)
  • -bit signed integer ki range? →
  • Woh akela type jiska sizeof standard fix karta hai? → char (== 1)
  • float ke liye ~7 digits kyun? → 24 mantissa bits ×
  • sizeof ka return type? → size_t (unsigned)
  • 0.1+0.2 == 0.3? → false (binary rounding)
n bits se kitne distinct bit patterns exist karte hain?
n-bit unsigned integer ki range?
n-bit signed (two's complement) integer ki range?
Signed range asymmetric kyun hai (ek zyada negative)?
Pattern 1000…0 most-negative value encode karta hai, aur 0 positive side par ek slot use karke baitha hai.
Signed char (8 bits) ki range?
Unsigned char (8 bits) ki range?
32-bit int ki range?
Kin type ka sizeof standard ke hisaab se 1 guaranteed hai?
char
C mein integer sizes ki guaranteed ordering?
char ≤ short ≤ int ≤ long ≤ long long
IEEE-754 float bit layout (sign/exp/mantissa)?
1 / 8 / 23, bias 127
IEEE-754 double bit layout?
1 / 11 / 52, bias 1023
Ek normalized IEEE-754 number ki value formula?
Float mein ~7 decimal digits of precision kyun hoti hai?
24 mantissa bits × log10(2) ≈ 7.2
Double precision ke approximate decimal digits?
~15–16 (53 bits × log10(2))
size_t kya hai?
Ek unsigned type jo kisi bhi object ka size hold karne ke liye kaafi bada ho; sizeof ke dwara return hota hai.
size_t ke liye printf format specifier?
%zu
"size_t i; i >= 0" countdown loop mein bug kyun hai?
Unsigned kabhi < 0 nahi ho sakta, isliye ye hamesha true hota hai → infinite loop aur wrap-around.
C mein 0.1+0.2 != 0.3 kyun hai?
0.1 aur 0.2 ka koi finite binary representation nahi, isliye unhe round kiya jaata hai.

Recall Feynman: ek 12-saal ke bachche ko samjhao

Choti labelled boxes imagine karo. Ek char box bahut chhota hai — usme ek letter ya ek chhota number fit hota hai. Ek int box bada hai — usme normal counting numbers fit hoti hain. Ek double box special hai: sirf count karne ki jagah, ye number ko "scientific notation" form mein yaad rakhta hai (kuch digits + dot kahan jaata hai), isliye ye bahut bade ya bahut chhote numbers hold kar sakta hai lekin sirf ~15 trustworthy digits ke saath. size_t woh box hai jo hum kehne ke liye use karte hain "ye cheez kitni badi hai?" — aur kyunki kisi cheez ka size kabhi negative nahi hota, woh box sirf 0 aur usse upar hold karta hai. Box par lagaa label computer ko batata hai ki box kitna bada hai aur andar kya hai use kaise padhna hai.


Connections

  • Two's Complement Representationkyun signed ranges asymmetric hain
  • Integer Overflow and Undefined Behaviour — range ke baad kya hota hai
  • IEEE-754 Floating Point — full mantissa/exponent derivation
  • sizeof Operator — compile time par sizes kaise query karein
  • Type Conversion and Promotion — jab types mix hoti hain toh kya hota hai
  • Pointers and Addresses — kyun size_t pointer width se match karta hai

Concept Map

needs

specifies

specifies

specifies

as int char or float

derives

non-negative

includes negatives

uses

measured by

enforces

only fixed sizeof char equals 1

Memory raw bytes 0s and 1s

Data type contract

Size in bytes

Interpretation lens

Range of values

n bits give 2^n patterns

Unsigned range 0 to 2^n-1

Signed range -2^n-1 to 2^n-1 -1

Two's complement

sizeof operator

char le short le int le long