19 / 90

C++ Ternary Operator

C++ ternar operatori

C++ da uchlik operator shartga asoslangan ikkita ifodadan birini bajarish uchun ishlatiladigan ixcham, inline usuldir. U shartli operator deb ham ataladi.

C++ da uchlik operator

Uchlik operator sinov shartini baholaydi va shart natijasi asosida ikkitadan ifodani bajaradi.

Sintaksis

example.cpp
condition ? expression1 : expression2;

Bu erda condition baholanadi va

  • agar condition true bo'lsa, expression1 bajariladi.
  • agar condition false bo'lsa, expression2 bajariladi.

Uchlik operator 3 ta operand oladi ( condition , expression1 va expression2 ). Demak, uchlik operator nomi.

Misol: C++ uchlik operatori

example.cpp
#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

kod
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

kod
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";

Ichki uchlik operatorlari

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.

example.cpp
#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

kod
Number is Zero

Yuqoridagi misolda uchlik operatorlardan foydalanishga e'tibor bering,

example.cpp
(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.

  • Aks holda, agar birinchi shart false bo'lsa, (number > 0) ikkinchi sinov sharti baholanadi.

[!NOTE] Ichki uchlik operatorlaridan foydalanish tavsiya etilmaydi. Buning sababi, bizning kodimizni yanada murakkablashtiradi.