Lesson 2 — Beginner
Variables & Data Types
Variable ek aisi jagah hai jahan data save hota hai — jaise dukaan mein har saman ka dabba. Is lesson mein hum dekhenge variable kaise banate hain, kaunsa data type kab use hota hai, aur int/float ke beech ki conversion traps kaise bachein.
Variable kya hai aur kaise banta hai
WHAT
Variable ek named memory location hai jisme value store hoti hai. C mein variable pehle declare hota hai (type + naam), phir use karta hai. Declaration hi memory decide karti hai — kitni aur kis type ki.
WHEN
Jab bhi kuch save karna ho — marks, naam, price, count — variable chahiye. Program chalte waqt har temporary aur permanent value kisi na kisi variable mein rehti hai.
WHERE
Function ke andar (local), file ke upar (global), ya heap pe (pointer ke through) — variable jagah ke hisaab se alag-alag scope rakhta hai.
int age = 20; // poora number
float price = 99.5f; // decimal
char grade = 'A'; // ek character
double pi = 3.14159265; // bada decimal (15-16 digits)
int a, b, c; // teeno ek saath declare
a = 10; b = 20; // ab value daali
- Naming rules: sirf letters, digits aur underscore (_). Shuruaat letter ya underscore se — digit se nahi.
- Case-sensitive: Age aur age do alag variables hain.
- Keywords mat use: int, return, if — ye reserved hain naam ke liye.
- No spaces: student_name chalega, student name nahi.
Core data types aur size
Type Size* Format Example
int 4 bytes %d int age = 20;
float 4 bytes %f float pi = 3.14f;
double 8 bytes %f double big = 1.234567;
char 1 byte %c char ch = 'A';
long int 4/8 bytes %ld long big = 1000000L;
short 2 bytes %hd short s = 100;
* typical 32/64-bit compiler pe — hamesha sizeof se check karo
#include <stdio.h>
int main() {
printf("int=%zu float=%zu char=%zu double=%zu\n",
sizeof(int), sizeof(float), sizeof(char), sizeof(double));
return 0;
}
Output (typical):
int=4 float=4 char=1 double=8
Qualifiers — const, signed, unsigned
const float PI = 3.14159; // fix value — badal nahi sakte
// PI = 3.0; // ERROR: assignment to constant
unsigned int x = 4000000000; // sirf positive — range double
int y = -5; // signed by default (negative allowed)
int a = 10; // variable — badalta rehta hai
const int b = 20; // constant — pura program mein same
- signed vs unsigned: signed mein ek bit sign ke liye (negative + positive), unsigned mein saari bits value ke liye — isliye unsigned ka positive range dugna.
- const: initialize karte waqt do aur phir kabhi mat chhua. Configuration values ke liye best.
- char ka dhoka: char signed ya unsigned ho sakta hai compiler pe — isliye 200 jaisi values store karne mein overflow ho sakta hai.
- Literal suffix: 3.14f (float), 100L (long), 'A' (char) — compiler ko extra hint.
Type conversion — integer division ka trap
Jab do alag type ke values ka operation hota hai, C chhoti type ko badi type mein convert kar deta hai — ye implicit conversion (automatic promotion) hai. Aur tum khud convert karo toh wo explicit casting.
#include <stdio.h>
int main() {
int a = 7, b = 2;
printf("%d\n", a / b); // 3 — dono int, fraction gaya!
printf("%f\n", (float)a / b); // 3.500000 — cast kiya tab sahi
int x = 5.9; // truncation → 5
float f = 43; // promotion → 43.000000
printf("%d %f\n", x, f);
return 0;
}
Output:
3
3.500000
5 43.000000
Exercise
Question: Float value print karne wala format specifier kya hai? (% ke saath)
Question: Char data type ki size kitne bytes hoti hai? Sirf number daalo.
Question: int a = 7, b = 2; a / b ka output kya hai? Sirf number daalo.
Question: Program ke andar value ko badalne se rokne wala keyword kaunsa hai?
Common mistakes
- Bina declare kiye variable use kar lena: C mein pehle declaration phir use. Compiler error aayega "undeclared" — pehle type batao, tabhi memory milegi.
- 7/2 = 3.5 samajhna: Do int ka division int hi hai — 3.5 ke liye (float) cast lagao. Output questions mein ye sabse common trap hai.
- Float ko exactly 0.3 samajhna: Floating point decimal ko hamesha exact nahi rakh paata (0.1 + 0.2 = 0.300000...). Isliye float ko == se compare mat karo — tolerance use karo.
Dukaan pe chhote decimals ka hisaab aksar "almost" aata hai — yehi float ki asli duniya hai. C mein bhi same: 0.1 + 0.2 exact 0.3 nahi hota:
#include <stdio.h>
int main() {
float a = 0.1, b = 0.2;
printf("%.10f\n", a + b);
if (a + b == 0.3) printf("exact 0.3\n");
else printf("0.3 NAHI hai!\n");
return 0;
}
Output: 0.3000000119
0.3 NAHI hai!
Fix: integer paise rakho (20 + 30 = 50 paise) ya tolerance do.- TCS NQT: format specifiers (%d, %f, %c, %s) aur sizeof — 1-2Q fixed.
- GATE: signed/unsigned range aur integer division traps.
- College exam: type conversion program likhwana — implicit vs explicit.
- Trap: "int ki size hamesha 4 hai" — compiler/platform pe depend karti hai, sizeof se check karo.
Variables aur types clear. Agla lesson — Operators — mein dekhenge calculations, comparisons aur bitwise tricks kaise hote hain.