Darsliklar C O`zgarmaslar

C C O`zgarmaslar

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 const kalit so’zi yoki #define direktivasi 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.