Jei ... Kitas paaiškinimas C paaiškinta

Sąlyginis kodo srautas - tai galimybė pakeisti kodo fragmento elgesį, atsižvelgiant į tam tikras sąlygas. Tokiose situacijose galite naudoti ifteiginius.

ifPareiškimas taip pat žinomas kaip sprendimų priėmimo pareiškimą, nes jis priima sprendimą dėl tam tikros sąlygos ar išraiškos pagrindu. Kodo blokas ifsakinyje yra vykdomas, kai sąlyga įvertinama kaip teisinga. Tačiau kodas garbanotųjų petnešų viduje praleidžiamas, jei būklė vertinama kaip klaidinga, o kodas po ifįvykdymo.

Sintaksė yra ifpareiškimas

if (testCondition) { // statements }

Paprastas pavyzdys

Pažvelkime į to pavyzdį:

#include  #include  int main(void) { if(true) { printf("Statement is True!\n"); } return 0; }

Išvestis:

Statement is True!

Jei ifteiginio skliaustuose esantis kodas yra teisingas, viskas vykdoma garbanotose petnešose. Šiuo atveju trueįvertina tiesą, taigi kodas paleidžia printffunkciją.

if..else pareiškimus

Be if...elsepareiškimą, jeigu atsižvelgiant į skliaustuose kodas ifteiginys yra teisingas, vykdomas kodas viduje jos skliausteliuose. Bet jei sakinys skliaustuose yra klaidingas, elsevietoj jo vykdomas visas sakinio skliaustuose esantis kodas .

Žinoma, aukščiau pateiktas pavyzdys šiuo atveju nėra labai naudingas, nes jis truevisada vertinamas kaip tiesa. Štai dar šiek tiek praktiškesnis:

#include  int main(void) { int n = 2; if(n == 3) { // comparing n with 3 printf("Statement is True!\n"); } else { // if the first condition is not true, come to this block of code printf("Statement is False!\n"); } return 0; }

Išvestis:

Statement is False!

Čia yra keletas svarbių skirtumų. Pirma, stdbool.hnebuvo įtraukta. Tai gerai, nes trueir falsenėra naudojami kaip pirmame pavyzdyje. C, kaip ir kitose programavimo kalbose, galite naudoti teiginius, kurie vertinami kaip teisingi ar neteisingi, o ne naudoti logines reikšmes truear falsetiesiogiai.

Taip pat pastebėsite, atsižvelgiant į skliaustuose būklę ifpareiškimas: n == 3. Ši sąlyga lyginama, no skaičius 3. ==yra palyginimo operatorius ir yra viena iš kelių palyginimo operacijų C.

Lizdai if...else

if...elsePareiškimas leidžia pasirinkimas turi būti atliktas tarp dviejų galimybių. Tačiau kartais reikia pasirinkti tris ar daugiau galimybių.

Pavyzdžiui, matematikos ženklo funkcija grąžina -1, jei argumentas yra mažesnis už nulį, +1, jei argumentas yra didesnis nei nulis, ir grąžina nulį, jei argumentas yra nulis.

Šis kodas įgyvendina šią funkciją:

if (x < 0) sign = -1; else if (x == 0) sign = 0; else sign = 1;

Kaip matote, antrasis if...elsesakinys yra įdėtas elseį pirmojo teiginį if..else.

Jei xyra mažiau nei 0, tada signnustatoma į -1. Tačiau jei xne mažiau kaip 0, vykdomas antrasis if...elsesakinys. Čia, jei xlygi 0, signtaip pat nustatoma 0. Tačiau, jei xdidesnis nei 0, signvietoj to nustatoma 1.

if...elsePradedantieji vietoj įdėto teiginio dažnai naudoja ifsakinių eilutę :

if (x  0) { sign = 1; }

Nors tai veikia, nerekomenduojama, nes neaišku, kad tik vienas iš priskyrimo sakinių ( sign = ...) yra skirtas vykdyti priklausomai nuo x. Tai taip pat neefektyvu - kiekvieną kartą paleidus kodą, išbandomos visos trys sąlygos, net jei viena ar dvi nebūtinai turi būti.

dar ... jei teiginiai

if...elseteiginiai yra alternatyva ifteiginių eilutei. Apsvarstykite šiuos dalykus:

#include  int main(void) { int n = 5; if(n == 5) { printf("n is equal to 5!\n"); } else if (n > 5) { printf("n is greater than 5!\n"); } return 0; }

Išvestis:

n is equal to 5!

Jei ifteiginio sąlyga įvertinama kaip klaidinga, else...ifpatikrinama teiginio sąlyga . Jei ši sąlyga įvertinama kaip teisinga, else...ifpaleidžiamas sakinio garbanotųjų petnešų kodas.

Palyginimo operatoriai

Operatoriaus vardas Naudojimas Rezultatas
Lygus a == b Tiesa, jei alygu b, klaidinga kitaip
Nelygu a != b Tiesa, jei anėra lygu b, klaidinga kitaip
Geresnis negu a > b Tiesa, jei ayra didesnis nei b, klaidinga kitaip
Didesnis nei lygus a >= b Tiesa, jei ayra didesnė arba lygi b, klaidinga kitaip
Mažiau nei a < b Tiesa, jei ayra mažiau nei b, klaidinga kitaip
Mažesnis nei lygus a <= b Tiesa, jei ayra mažesnė arba lygi b, klaidinga kitaip

Loginiai operatoriai

Galbūt norėtume paleisti šiek tiek kodo, jei kažkas netiesa, arba jei tiesa yra du dalykai. Tam turime loginius operatorius:

Operatoriaus vardas Naudojimas Rezultatas
Ne ( !) !(a == 3) Tiesa, jei ayra ne lygus 3
Ir ( &&) a == 3 && b == 6 Tiesa, jei alygi 3 irb lygi 6
Arba ( ||) a == 2 || b == 4 Tiesa, jei alygi 2 arbab lygi 4

Pavyzdžiui:

#include  int main(void) { int n = 5; int m = 10; if(n > m || n == 15) { printf("Either n is greater than m, or n is equal to 15\n"); } else if( n == 5 && m == 10 ) { printf("n is equal to 5 and m is equal to 10!\n"); } else if ( !(n == 6)) { printf("It is not true that n is equal to 6!\n"); } else if (n > 5) { printf("n is greater than 5!\n"); } return 0; }

Išvestis:

n is equal to 5 and m is equal to 10!

Svarbi pastaba apie C palyginimus

Nors anksčiau minėjome, kad kiekvienas palyginimas tikrina, ar kažkas tiesa, ar klaidinga, tačiau tai tik pusė tiesa. C yra labai lengvas ir artimas aparatinei įrangai, kurioje veikia. Naudojant aparatinę įrangą lengva patikrinti, ar kažkas yra 0, ar klaidinga, bet visa kita yra daug sunkiau.

Vietoj to daug tiksliau sakyti, kad palyginimai tikrai tikrina, ar kažkas yra 0 / klaidinga, ar tai yra kita vertė.

Pavyzdžiui, jo teiginys yra teisingas ir pagrįstas:

if(12452) { printf("This is true!\n") }

Pagal konstrukciją 0 yra klaidingas, o pagal susitarimą - 1 teisingas. Tiesą sakant, pažvelkime į stdbool.hbiblioteką:

#define false 0 #define true 1

Nors yra šiek tiek daugiau, tai yra loginių elementų darbo ir bibliotekos veikimo esmė. Šios dvi eilutės kompiliatoriui nurodo žodį pakeisti false0 ir true1.