📦
Basics

Variables & Data Types

Storing Data
💡 Variable ek labeled dabba hai — C mein dabbe ka size fix hota hai (jaise int hamesha same amount ki memory leta hai), Java se bhi zyada strict.

C mein primary data types hain: int (whole number), float (decimal, kam precision), double (decimal, zyada precision), char (ek single character). Har type ki memory mein ek fixed size hoti hai (jaise int aksar 4 bytes).

C "statically typed" hai — variable declare karte waqt type batana zaroori hai, aur wo type kabhi badalta nahi. Java se ek bada farq: C mein boolean type built-in nahi hai (purane C mein) — 0 ka matlab false, non-zero ka matlab true hota hai.

sizeof() operator se pata kar sakte ho koi type kitni memory leta hai — ye machine-dependent bhi ho sakta hai (32-bit vs 64-bit systems par thoda farq aa sakta hai).

int age = 10;
float price = 99.5f;
double pi = 3.14159265;
char grade = 'A';

printf("Size of int: %lu bytes\n", sizeof(int));
📦
Variable ek labeled dabba hai — C mein dabbe ka size fix hota hai (jaise int hamesha same amount ki memory leta hai), Java se bhi zyada strict.
1 / 6
⚡ झट से Recap
  • int, float, double, char — C ke basic types
  • Statically typed — type kabhi nahi badalta
  • sizeof() se memory size pata karo
इस page में (3 subtopics)

C mein sirf "int" nahi, uske variants bhi hain: short int (kam memory, chhoti range), long int (zyada memory, badi range), aur long long int (aur bhi badi range, modern C mein). Har ek ki size compiler/platform ke hisaab se thodi alag ho sakti hai.

unsigned keyword se negative numbers allow nahi hote, lekin positive range double ho jaati hai — jaise unsigned int sirf 0 se upar values store karta hai, lekin usi memory mein signed int se double positive range milti hai.

short s = 100;
int i = 100000;
long l = 10000000000L;      // L suffix long ke liye
unsigned int u = 4000000000; // sirf positive, bigger range
💡Tip: Interview mein pucha jaata hai int ka size kya hai — jawaab "typically 4 bytes" hai, lekin technically C standard sirf minimum guarantee deta hai (int kam se kam short jitna bada hoga), exact size platform-dependent hai. sizeof(int) se hamesha confirm karo.

float single precision hai (~7 decimal digits accurate, 4 bytes), double double precision hai (~15-16 decimal digits accurate, 8 bytes). Modern C mein double hi default hota hai jab tum sirf "3.14" likhte ho — float ke liye 'f' suffix chahiye: 3.14f.

Floating point numbers "exact" nahi hote — 0.1 + 0.2 exactly 0.3 nahi deta (binary representation ki wajah se), ye har programming language mein hota hai, sirf C-specific nahi. Financial calculations ke liye float/double avoid karna chahiye.

float f = 3.14f;
double d = 3.14159265358979;

printf("%.10f\n", 0.1 + 0.2); // 0.3000000000 nahi, kuch aur dikhega!
⚠️Common Mistake: Floating point numbers ko == se compare mat karo — precision errors ki wajah se do "same" values technically alag ho sakti hain. Iske bajaye difference check karo: fabs(a - b) < 0.0001

char actually ek chhota integer hai (1 byte) jo ASCII table ke hisaab se ek character represent karta hai — 'A' ka ASCII value 65 hai, '0' ka value 48 hai. Isi wajah se char par arithmetic bhi kar sakte ho.

char aur int ke beech automatic conversion hoti hai — 'A' + 1 result deta hai 66, jo agar char mein store karo to 'B' ban jaata hai. Ye trick alphabet loops mein bahut use hoti hai.

char grade = 'A';
printf("%d\n", grade);       // 65 (ASCII value)
printf("%c\n", grade + 1);   // B (character math!)

char digit = '7';
int value = digit - '0';     // '7' - '0' = 7 (asli integer)
💡Tip: digit - '0' ek bahut common pattern hai — kisi bhi digit character ('0'-'9') ko uski actual integer value mein convert karne ke liye, kyunki ASCII mein digits sequential hain.