Razryadli uzlashtirish murakkab operatorlari.
Barcha binar razryadli operatorlarini uzlashtirish operatorlari bilan biriktirsa bo’ladi.
Masalan kuyidagi ikkita instruksiyada x o’zgaruvchisiga YOKI ( OR) kiskaruvchi operandlari bilan x va 127 ni uzlashtiradi.
Xqx *127; xl q127;
VA ? operatori
S# da eng kulay operatorlarining biri bo’ trenar ?- operatori bo’lib xisoblanadi.
? – Operatori kupincha belgilangan konstruksiya tipini almashtirish uchun foydalaniladi if- then – else. ?- Operatori trenar operatori deb aytiladi, sababi u uchta operator Bilan ishlaydi. Uning umumiy format yozilishi kuyidagi turga ega:
Ifoda 1 ? Ifoda 2 : Ifoda 3;
Bu yerda ifoda 1 bool tipida bulishi kerak. Ifoda2 va Ifoda3 element tiplari bir xil bulishi kerak. Itibor beringki xo’sh nuktaning joylashishi va foydalanishiga
? Ifoda ma’nosi kuyidagicha aniklanadi. Ifoda 1 xisoblanadi. Agarda uning ntaiyjasi xakikiy bo’lsa ifoda2 bajariladi va uning natiyjasi xamma ?-ifoda uchun ma’nosi buladi. Agarda Ifoda1 elementining xisoblash natijasi yolgon bo’lsa, unda barcha ?Ifoda ma’nosi Ifoda3 elementining xisoblash natiyjasi buladi. Masala kurib utamiz abs val uzgaruvchisiga val uzgaruvchisining absolyut ma’nosi kuyiladi.
Absvalq val < 0 ? – val; G’G’ val ma’nosining absolyut ma’noni olamiz .
Bu yerda absval uzgaruvchisiga val uzgaruvchining ma’nosi uzlashtiriladi, agarda u nuldan ulkan yoki kichik bulsa. Agarda val uzgaruvchisining ma’nosi manfiy bulsa absval uzgaruvchisiga «unar minusi » uzlashtiriladi, va u musbat ma’noga ega.
? operatori foydalanishi tugrisida yana bir masalani kurib utamiz.
Bu dasturda 100 sonini xar xil sonlarga bulinishini kurib utamizya, lekin nulga bulishi kuzatilmaydi.
G’G’ ? Operatori yordamida nulga bulishni aylanib utish uslubi.
Using System;
class NoZeroDiv { public static void
Main( ) { int i ;
for iq-5 ; i < 6; iQQ ) {
result >> i1q0? 100G’i : 0 ;
if (i 1 -0 )
Console. WriteLine ( “ 100G’ “ Qi “ teng “ Q result ); }
}
ushbu dasturning bajarilishi natiyjalariga karang.
G’ -5 teng – 20
G’ -4 teng - 25
G’ - 3 teng – 33
G’ - 2 teng -50
G’ - 1 teng -100
G’ 1 teng 100
G’ 2 teng 50
G’ 3 teng 33
G’ 4 teng 25
G’ 5 teng 20
Shu dasturdagi keyingi katorga karang
I result q I !q 0 ? 100 G’ i : 0;
Bu yerda result uzgaruvchisiga 100 sonini i uzgaruvchisining j ma’nosiga bulish natiyjalari uzlashtirilgan. Lekin bu amal i nulga teng bulmagan xoldagina bajariladi. Teskari xolda (agar iq0) result uzgaruvchisiga nul ma’no beriladi.
Xakiy xatda ? operatori tamonidan uzgaruviga ma’no berish shart emas. Misol uchun, siz bu ma’noni usunilgan uslubning argumenti sifatida kullanishingiz mumkin. YAna bir shu kabi variant imkoniyati bor. Agar ? operatori tomonidan kabul kilingan ifodalar bool tipiga ega bulsa, unda bu operatorning bajarilish natiyjalarini sikldagi yoki if instruksiyasidagi shartli ifodalar sifatida kullash mumkin. Avvalgi dasturni ancha ixcham turida karab utaylik (uning bajarilish natiyjalari avvalgisiga tugri keladi).
G’G’ ? operatori yordamida nulga bulishni aylanib utish.
Using System;
class NoZeroDiv { public static void
Main( ) { int i ;
for ( iq-5 ; i < 6; iQQ ) if (i 1qq0 ? true: false
Console. WriteLine ( “ 100G’ “ Qi Q“ teng “ Q 100G’i ); > }
}
if instruksiyasiga itibor bering. Agar i uzgaruvchisining ma’nosi nulga teng bulsa if tekshirish natiyjalari – false ma’nosiga teng buladi, u esa chikarish instruksiyasining bajarilishini uzaga keltirmaydi, demak nulga bulishni xam. Aksi xolda bulish (natiyjani chikarish bilan) uzaga keladi.
Do'stlaringiz bilan baham: |