Arifmetik amallar
Dart barcha umumiy arifmetik operatsiyalarni qo'llab-quvvatlaydi. Ular arifmetik amallarda raqamlar bo'yicha qatnashadilar. Ikkilik arifmetik amallar (ikki operandda bajariladi) va unar (bitta operandda bajariladi) mavjud. Ikkilik operatsiyalarga quyidagilar kiradi:
+
ikkita raqamni qo'shish amali:
1
2
3
4
|
int a = 10;
int b = 7;
int c = a + b; // 17
int d = 4 + b; // 11
|
-
Ikki sonni ayirish amali:
1
2
3
4
|
int a = 10;
int b = 7;
int c = a - b; // 3
int d = 4 - a; // -6
|
*
ikki sonni ko'paytirish amali
1
2
3
4
|
int a = 10;
int b = 7;
int c = a * b; // 70
int d = b * 5; // 35
|
/
Ikki raqamni bo'lish operatsiyasi:
1
2
3
4
|
int a = 20;
int b = 5;
double c = a / b; // 4.0
double d = 22.5 / 4.5; // 5.0
|
Bo'linayotganda, operatsiya natijasi har doim ikki xil turdagi ekanligini unutmang.
~ /
ikki sonni butun songa bo'lish amali. Amaliyot natijasi har doim int turiga ega:
1
2
3
4
|
int a = 33;
int b = 5;
int c = a ~/ b; // 6
int d = 22 ~/ 4; // 5
|
%
Ikki raqamni bo'lishdan qolganni olish:
1
2
3
4
|
int a = 33;
int b = 5;
int c = a % b; // 3
int d = 22 % 4; // 2 (22 - 4*5 = 2)
|
Xuddi shu sonda bajariladigan ikkita unar arifmetik amallar ham mavjud: ++ (o'sish) va - (kamaytirish). Har bir operatsiya ikki turga ega: prefiks va postfiks:
++ (prefiks ortishi)
O'zgaruvchini bittaga oshirishni nazarda tutadi, masalan, z = ++ y (avval y o'zgaruvchining qiymati 1 ga oshiriladi, so'ngra uning qiymati z o'zgaruvchisiga beriladi)
1
2
3
4
|
int a = 8;
int b = ++a;
print(a); // 9
print(b); // 9
|
++ (postfiks ortishi)
Shuningdek, o'zgaruvchining bittaga o'sishini ifodalaydi, masalan, z = y ++ (birinchi navbatda, y ning qiymati z ga beriladi, so'ngra y ning qiymati 1 ga oshiriladi)
1
2
3
4
|
int a = 8;
int b = a++;
print(a); // 9
print(b); // 8
|
- (prefiksning kamayishi)
o'zgaruvchini bittaga kamaytirish, masalan, z = - y (avval y o'zgaruvchining qiymati 1 ga kamayadi, so'ngra uning qiymati z o'zgaruvchisiga beriladi)
1
2
3
4
|
int a = 8;
int b = --a;
print(a); // 7
print(b); // 7
|
- (postfiksni kamaytirish)
z = y-- (birinchi navbatda y o‘zgaruvchining qiymati z o‘zgaruvchiga beriladi, so‘ngra y o‘zgaruvchining qiymati 1 ga kamaytiriladi)
1
2
3
4
|
int a = 8;
int b = a--;
print(a); // 7
print(b); // 8
|
Arifmetik ustuvorlik
Ba'zi operatsiyalar boshqalardan ustun turadi va shuning uchun birinchi navbatda amalga oshiriladi. Ustuvorlikni kamaytirish tartibida operatsiyalar:
++ (postfiksning o'sishi), - (postfiksning kamayishi)
++ (prefiks ortishi), - (prefiksning kamayishi)
* (ko'paytirish), / (bo'lish),% (bo'lishning qoldig'i)
+ (qo'shish), - (ayirish)
Arifmetik ifodalar to'plamini bajarishda operatsiyalarning ustuvorligini hisobga olish kerak:
1
2
3
4
|
int a = 8;
int b = 7;
int c = a + 5 * ++b;
print(c); // 48
|
Birinchidan, o'sish ++ b operatsiyasi bajariladi, u yuqoriroq ustuvorlikka ega - u b o'zgaruvchining qiymatini oshiradi va natijada uni qaytaradi. Keyin 5 * ++ b ko'paytiriladi va faqat oxirgi qo'shilish a + 5 * ++ b hisoblanadi.
Qavslar hisob-kitoblar tartibini qayta belgilashga imkon beradi:
1
2
3
4
|
int a = 8;
int b = 7;
int c = (a + 5) * ++b;
print(c); // 104
|
Qo'shish amali pastroq ustuvorlikka ega bo'lsa-da, qo'shish ko'paytirish emas, balki birinchi navbatda qo'shish amalga oshiriladi, chunki qo'shish amali qavs ichiga olingan.
Do'stlaringiz bilan baham: |