1. Ədədlər hansı olur?
Proqramlaşdırmada biz daim ədədlərlə işləyirik — istifadəçinin yaşı, qalaktikadakı ulduzların sayı və ya bank hesabındakı qəpiklərə qədər. Amma fərqli tapşırıqlar üçün fərqli ədəd tipləri lazımdır: bəzən yalnız tam ədədləri saxlamaq vacibdir, bəzən isə çox dəqiq onluq ədədlər, bəzən də "mənfi olmayan" ədədlər lazımdır.
Tam ədədlər (int və digərləri)
Tam ədəd — bu, onluq hissəsi olmayan ədəddir.
C#-da ən çox int tipindən istifadə olunur, amma bundan başqa ölçüsü və diapazonu fərqli olan bir neçə variant da var.
- int — tam ədədlər üçün əsas "işçi" tipdir. Çox böyük (və kiçik) dəyərləri saxlaya bilir, amma yaddaşda çox yer tutmur.
Məsələn, like-ların sayı, yaş, ildəki günlərin sayı üçün demək olar ki, həmişə int istifadə olunur. - long — dəyərlər çox böyük ola bilərsə (milyardlar və ya trilyonlar kimi) istifadə olunur.
Nümunə: YouTube-da bütün tarix boyu baxışların sayını saxlamaq. - short — daha qənaətcil, amma az istifadə olunan tipdir. Çoxlu eyni kiçik dəyərlər olduqda uyğundur (məsələn, audio məlumatlar, rəng komponentləri).
- byte — daha kiçik dəyərlər üçün, xüsusilə qrafikada və fayllarla işləyərkən yaddaşa qənaət vacibdirsə.
Onluq ədədlər (double, float, decimal)
Bəzən onluq hissəsi olan ədədlərlə işləmək lazımdır. Məsələn, havanın temperaturu, tələbənin orta balı, məhsulun qəpiklə qiyməti.
- double — onluq ədədləri saxlamaq üçün "default" tipdir. Əksər hesablamalar üçün kifayət qədər dəqiqdir (nümunə: 3.1415926535…).
- float — daha yüngül və az dəqiq tipdir, əsasən kompüter qrafikasında və ya böyük məlumat massivlərinin işlənməsində yaddaşa qənaət vacibdirsə istifadə olunur.
- decimal — maliyyə və mühasibat tapşırıqları üçün nəzərdə tutulub, qəpiklərə qədər dəqiqliyi saxlamaq vacibdirsə, onluq ədədlərin saxlanma xüsusiyyətlərinə görə "itki" olmasın deyə. Məsələn, hesabdakı balansı, məhsulun qiymətini, valyuta məzənnəsini saxlamaq üçün.
Xüsusi ədədi tiplər
C#-da xüsusi hallarda istifadə olunan əlavə ədədi tiplər də var:
- uint, ulong, ushort — "işarəsiz" tiplərdir, yalnız müsbət dəyərlər istifadə oluna bilər, amma diapazon "işarəli" analoqları ilə müqayisədə 2 dəfə böyükdür.
- sbyte — kiçik, işarəli tipdir (mənfi və müsbət dəyərləri kompakt saxlamaq üçün, -128 -dən 127 -yə qədər).
- BigInteger — standart diapazonlardan böyük ədədlərlə işləmək lazımdırsa, məsələn, kriptoqrafiyada və ya astronomiyada hesablamalar üçün.
2. İşarəli və işarəsiz ədədlər
İşarəli tip həm müsbət, həm də mənfi ədədləri saxlaya bilir. Bu rahatdır, əgər dəyərlər "həm sıfırdan yuxarı, həm də aşağı" ola bilərsə: məsələn, temperatur, hesab balansı, dəniz səviyyəsindən hündürlük.
İşarəsiz tip — yalnız sıfır və müsbət ədədlər. Mənfi ola bilməzsə uyğundur — məsələn, otaqdakı adamların sayı, fayldakı baytlar, vaxt.
Nümunə:
- int (işarəli): -10, 0, 50
- uint (işarəsiz): 0, 10, 1000
İşarəsiz tipdən istifadə edəndə, dəyişəndə 2 dəfə çox maksimum dəyər saxlamaq olur (çünki "mənfi diapazon" yoxdur). Onlardan istifadə olunur, əgər dəqiq bilirsən ki, dəyər mənfi ola bilməz.
İşarəli tam tiplər
| Tip | Ölçü | Dəyərlər diapazonu | İstifadə nümunəsi |
|---|---|---|---|
|
1 bayt | -128-dən 127-yə | -128, 0, 127 |
|
2 bayt | -32 768-dən 32 767-yə | -1000, 0, 32000 |
|
4 bayt | -2 147 483 648-dən 2 147 483 647-yə | -1000000, 0, 2000000 |
|
8 bayt | -9 223 372 036 854 775 808 -dən 9 223 372 036 854 775 807-yə |
-10_000_000_000, 1 |
İşarəsiz tam tiplər
| Tip | Ölçü | Dəyərlər diapazonu | İstifadə nümunəsi |
|---|---|---|---|
|
1 bayt | 0-dan 255-ə | 0, 128, 255 |
|
2 bayt | 0-dan 65 535-ə | 1000, 65000 |
|
4 bayt | 0-dan 4 294 967 295-ə | 100, 4000000000 |
|
8 bayt | 0-dan 18 446 744 073 709 551 615-ə | 1, 18_000_000_000_000 |
Onluq tiplər
| Tip | Ölçü | Dəyərlər nümunəsi | Təsvir |
|---|---|---|---|
|
4 bayt | 3.14f, -0.001f | tək dəqiqlik (7 rəqəm) |
|
8 bayt | 3.1415, -1.7E+308 | ikiqat dəqiqlik (15-16 rəqəm) |
|
16 bayt | 0.1m, 12345.6789m | maliyyə üçün yüksək dəqiqlik |
3. Ədədlər üçün suffix-lər
Bəzi hallarda, hansı tipdən istifadə etmək istədiyini açıq göstərmək lazımdır. Bunu suffix vasitəsilə edirlər:
- L və ya l — long tipi üçün (məsələn, 10000000000L)
- U və ya u — uint tipi üçün (məsələn, 123U)
- F və ya f — float tipi üçün (məsələn, 3.14f)
- D və ya d — double tipi üçün (adətən lazım deyil, çünki suffixsiz onluq ədəd double olur)
- M və ya m — decimal tipi üçün (məsələn, 99.99m — xüsusilə pulda vacibdir!)
Əgər suffix göstərməsən, default olaraq tam ədəd int, onluq isə double sayılır. Məsələn, 42 bu int-dir, 3.14 isə double-dır.
Bu nə üçün lazımdır? Məsələn, böyük ədəd long tipli dəyişənə mənimsədikdə səhv almamaq üçün:
long bigNumber = 9000000000L; // əgər L olmasa, kompilasiya səhvi olacaq
Pul üçün isə həmişə decimal və m suffix-i istifadə etmək yaxşıdır:
decimal price = 999.99m;
4. Alt xətt _ ayırıcısı
Ədədlər uzun olanda, sıfırlarda asanlıqla çaşmaq olur. Gözəllik və oxuma rahatlığı üçün C#-da alt xətt ayırıcısı istifadə etmək olar.
int population = 146_700_000;
long stars = 100_000_000_000L;
Bu tamamilə qanunidir: kompilator alt xətləri saymır, sən isə dərhal "gözlə" mərtəbələri görə bilirsən. Əsas odur ki, alt xətti əvvəldə, sonda, nöqtədən sonra və ya suffix-dən əvvəl qoyma.
5. Simvol tipi char
Bəzən proqramda ədədlərlə yox, ayrıca simvollarla işləmək lazımdır: hərf, rəqəm, işarə və hətta boşluq. Bunun üçün xüsusi tip var — char.
char nədir?
Bu, bir simvol saxlayan dəyişəndir:
- latın və ya kiril hərfi ('A', 'я')
- rəqəm ('5')
- spesifik simvol ('#', '%', '@')
- idarəedici simvol ('\\n' — yeni sətrə keçid)
Xüsusiyyətlər:
- char tipinin dəyəri tək dırnaq içində yazılır: char letter = 'B';
- Əslində char daxilində simvolun ədədi kodu (Unicode sistemində) saxlanılır, ona görə char-ı müqayisə etmək, int-ə çevirmək və hətta sadə arifmetika aparmaq olar:
char a = 'A';
char b = (char)(a + 1); // 'B'
int code = a; // 65 — 'A' hərfinin kodu
Xüsusi simvollardan istifadə etmək olar, məsələn: char tab = '\\t'; // tabulyasiya simvolu
char nə üçün lazımdır?
Mətnlə simvol-simvol işləmək üçün (məsələn, sətrin ilk hərfini yoxlamaq, durğu işarələrini tapmaq, parolu simvol-simvol oxumaq).
GO TO FULL VERSION