O’zgarmaslar (constant) — bir marta belgilangach, qayta o’zgartirib bo’lmaydigan qiymatlar. Ba’zi qiymatlar tabiatan doimiy: pi soni, soliq stavkasi, massiv hajmi. Ularni o’zgarmas qilish tasodifan o’zgartirib yuborishdan himoya qiladi va kod maqsadini aniqroq ifodalaydi. C’da o’zgarmasni yaratishning ikki usuli bor.
O’zgarmas (constant) — e’lon qilingandan so’ng qiymati o’zgarmaydigan qiymat. C’da u
constkalit so’zi yoki#definedirektivasi bilan yaratiladi.
const kalit so’zi
const bilan e’lon qilingan o’zgaruvchini o’zgartirishga urinish kompilyatsiya xatosiga olib keladi:
#include <stdio.h>
int main(void) {
const double PI = 3.14159;
const int KUNLAR = 7;
printf("Pi: %.5f\n", PI);
printf("Haftada %d kun\n", KUNLAR);
return 0;
}
Pi: 3.14159
Haftada 7 kun
Agar keyin PI = 3; deb yozsangiz, kompilyator xato beradi. const o’zgaruvchi turga ega bo’lgani uchun xavfsizroq.
#define direktivasi
O’zgarmas yaratishning yana bir usuli — #define preprosessor direktivasi. U kompilyatsiyadan oldin matnni almashtiradi:
#include <stdio.h>
#define MAX 100
#define SAYT "UzbekDevs"
int main(void) {
printf("Maksimal: %d\n", MAX);
printf("Sayt: %s\n", SAYT);
return 0;
}
Maksimal: 100
Sayt: UzbekDevs
#define MAX 100 — kompilyatsiyadan oldin kodda uchragan har bir MAX ni 100 ga almashtiradi. Diqqat: #define oxiriga nuqta-vergul qo’yilmaydi.
const va #define farqi
Ikki usulni jadvalda solishtiramiz:
| Xususiyat | const |
#define |
|---|---|---|
| Turi | bor (masalan, int) |
yo’q (oddiy almashtirish) |
| Qachon ishlaydi | kompilyatsiyada | preprosessor bosqichida |
| Xavfsizligi | yuqoriroq | pastroq |
| Xatolarni tekshirish | bor | yo’q |
Zamonaviy C’da ko’pincha const afzal ko’riladi, chunki u turga ega va xavfsizroq. #define esa massiv hajmi kabi joylarda hali ham keng ishlatiladi.
Nega o’zgarmas ishlatish kerak?
O’zgarmasning ikki muhim afzalligi bor: u xatoning oldini oladi va kodni o’qiladigan qiladi. Masalan, #define SOLIQ 0.12 ni bir joyda o’zgartirsangiz, u butun kodda yangilanadi. O’zgarmaslar odatda UPPER_CASE bilan yoziladi.
Xulosa
Bu bo’limda const va #define bilan o’zgarmas yaratish, ularning farqi va o’zgarmasning afzalliklarini ko’rib chiqdik. Zamonaviy C’da const afzal ko’riladi. Keyingi darsda operatorlarga o’tamiz.