C++ ternar operatori
C++ da uchlik operator shartga asoslangan ikkita ifodadan birini bajarish uchun ishlatiladigan ixcham, inline usuldir. U shartli operator deb ham ataladi.
Uchlik operator sinov shartini baholaydi va shart natijasi asosida ikkitadan ifodani bajaradi.
Sintaksis
condition ? expression1 : expression2;
Bu erda condition baholanadi va
condition true bo'lsa, expression1 bajariladi.condition false bo'lsa, expression2 bajariladi.Uchlik operator 3 ta operand oladi ( condition , expression1 va expression2 ). Demak, uchlik operator nomi.
#include <iostream>
#include <string>
using namespace std;
int main() {
double marks;
// foydalanuvchilardan ma'lumot olish
cout << "Enter your marks: ";
cin >> marks;
// uchlik operatori tekshiradi
// ball 40 dan yuqori
string result = (marks >= 40) ? "passed" : "failed";
cout << "You " << result << " the exam.";
return 0;
}
Chiqish 1
Enter your marks: 80
You passed the exam.
Faraz qilaylik, foydalanuvchi 80 ni kiritdi. Keyin marks >= 40 sharti true ga baholanadi. Demak, natijaga birinchi "passed" ifodasi tayinlangan.
Chiqish 2
Enter your marks: 39.5
You failed the exam.
Keling, foydalanuvchi 39.5 ni kiritdi deylik. Keyin marks >= 40 holati false ga baholanadi. Demak, natijaga ikkinchi "failed" ifodasi tayinlangan.
[!NOTE] Agar natija qisqa bo'lsa, biz uchlik operatoridan foydalanishimiz kerak.
1.Qisqa kod uchun uchlik operatori Uchlik operatori o'qish qobiliyati buzilmagan oddiy, inline shartli topshiriqlar uchun eng yaxshisidir. Masalan, int age = 20; string status; status = (age >= 18) ? "Adult" : "Minor"; Ushbu misolda age >= 18 holati baholanadi. Agar bu rost bo'lsa, Adult holatga tayinlanadi; agar noto'g'ri bo'lsa, Minor tayinlanadi. Bu toʻliq if...else iborasini ishlatishdan koʻra ancha ixchamroq boʻlib, u quyidagicha koʻrinadi: int age = 20; string status; if (age >= 18) { status = "Adult"; } else { status = "Minor"; } Bu yerda if...else operatori koʻproq qatorlarni egallaydi va koʻplab oddiy shartli topshiriqlar uchun foydalanilganda kodni chalkashtirib yuborishi mumkin. 2. Murakkab sharoitlarda aniqlik uchun if...else if...else operatori murakkab qarorlar qabul qilish jarayonlari va qisqalikdan ko‘ra aniqlik va o‘qilishi ustuvor bo‘lgan hollarda ko‘proq mos keladi. Aytaylik, siz ob-havoni bir nechta shartlarga ko'ra tasniflashingiz kerak. Bir nechta shartli iboralar bilan uchlik operatordan foydalanish noqulay va o'qish qiyin bo'ladi. Bunday hollarda biz if...else dan foydalanamiz. Keling, bir misolni ko'rib chiqaylik. int temperature = 25; string category; if (temperature < 10) { category = "Cold"; } else if (temperature <= 25) { category = "Moderate"; } else if (temperature > 25) { category = "Hot"; } else { category = "Inhabitable"; } 3. Uchlik operatori aniq qiymatni qaytaradi. Keling, ushbu fikrni asoslash uchun misolni ko'rib chiqaylik. int number = -4; string result; // ternary operator assigns value directly result = (number > 0) ? "Positive Number" : "Negative Number"; Bu yerda uchlik operator (number>0) sharti asosida qiymatni qaytaradi. Qaytarilgan qiymat natija o'zgaruvchisida saqlanadi. Aksincha, if...else tabiatan qiymat qaytarmaydi. Shunday qilib, o'zgaruvchiga tayinlash aniq. int number = -4; string result; // explicit assignment with if...else if (number > 0) result = "Positive Number"; else result = "Negative Number";
Shuningdek, bitta uchlik operatorni boshqa uchlik operator ichida ishlatish mumkin. U C++ tilida ichki uchlik operatori deb ataladi.
Mana, sonning musbat, manfiy yoki nol ekanligini aniqlash uchun ichki uchlik operatori yordamida dastur.
#include <iostream>
#include <string>
using namespace std;
int main() {
int number = 0;
string result;
// yoki yo'qligini topish uchun ichki uchlik operatori
// raqam musbat, manfiy yoki nolga teng
result = (number == 0) ? "Zero" : ((number > 0) ? "Positive" : "Negative");
cout << "Number is " << result;
return 0;
}
Chiqish
Number is Zero
Yuqoridagi misolda uchlik operatorlardan foydalanishga e'tibor bering,
(number == 0) ? "Zero" : ((number > 0) ? "Positive" : "Negative");
Bu yerga,
-(number == 0) - bu raqam 0 yoki yo'qligini tekshiradigan birinchi sinov sharti. Agar shunday bo'lsa, natijaga "Zero" qator qiymatini tayinlaydi.
false bo'lsa, (number > 0) ikkinchi sinov sharti baholanadi.[!NOTE] Ichki uchlik operatorlaridan foydalanish tavsiya etilmaydi. Buning sababi, bizning kodimizni yanada murakkablashtiradi.