Variables & Data Types
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));- int, float, double, char — C ke basic types
- Statically typed — type kabhi nahi badalta
- sizeof() se memory size pata karo
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 rangefloat 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!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)