Ja plānojat no matemātiskā fona, šī smalkā detaļa var jūs viegli uztvert.

C++ ir plaši izmantota programmēšanas valoda, taču tajā ir arī visbiežāk sastopamās programmēšanas kļūdas. Daudzas no šīm kļūdām rodas loģisku kļūdu dēļ. Jo īpaši salīdzināšanas darbību laikā pieļautās kļūdas var ietekmēt jūsu koda precizitāti un uzticamību.

C++ valodai ir viena īpaša salīdzināšanas kļūda, ko daudzi jaunie izstrādātāji neievēro. Šī kļūda rodas no nepareizas izpratnes par operatoru darbību, veicot vairākus salīdzinājumus. Uzziniet, kā izvairīties no šīs izplatītās kļūdas un kāpēc tā vispār notiek.

Salīdzinājumi valodā C++

Programmēšanas valoda C++ piedāvā daudz dažādu funkciju un rīku, kā arī pamata darbības, piemēram, salīdzināšanas operatorus. Salīdzināšanas operatori ir īpašas darbības programmēšanas valodās, kuras varat izmantot, lai salīdzinātu datus savā starpā. Izstrādātāji šos operatorus izmanto diezgan bieži, it īpaši, veidojot algoritmus.

Salīdzināšanas operatorus var redzēt daudzos dažādos ikdienas dzīves piemēros. Piemēram, iepērkoties pārtikas preču veikalā, cenu salīdzināšanai izmantojiet šos operatorus. Ja viena produkta cena ir zemāka par otru, jūs izvēlaties šo preci.

instagram viewer

Jūs varat redzēt salīdzināšanas operatorus ja-citādi paziņojumi diezgan bieži. Salīdzināšanas operatori ir vieta, kur pārbaudīt, vai viena vērtība ir lielāka, mazāka vai vienāda ar citu vērtību. Ir ļoti maza, bet svarīga detaļa, kuru nevajadzētu aizmirst. Salīdzināšanas izteiksmju rezultāti atgriež patieso vai nepatieso vērtību, kas ir Būla vērtības. Šīs vērtības ir viena no programmēšanas vadības struktūras pamata sastāvdaļām.

Piemēram, C++ programmēšanas valodā "==" operators pārbauda, ​​vai divas vērtības ir vienādas. Ja vērtības ir vienādas, rezultāts tiek atgriezts patiess. Pretējā gadījumā rezultāts būs nepatiess.

ja (a == b)
{
atgrieztiestaisnība;
}
cits
{
atgrieztiesviltus;
}

Salīdzināšanas problēmas piemērs

Viena no izplatītākajām C++ iesācēju kļūdām ir salīdzināšanas operatoru izmantošana. Šie operatori ļauj programmētājiem salīdzināt divas vērtības un veikt dažādas darbības, pamatojoties uz šī salīdzinājuma rezultātu. Tomēr nepareiza šo operatoru izmantošana var izraisīt neparedzētas kļūdas.

Piemēram, lai gan izteiksme 3 < 15 < 10 ir matemātiski nepareiza, C++ uzskata, ka tā rezultāts ir patiess. To var parādīt, uzrakstot šādu vienkāršu testa programmu.

Vispirms izveidojiet failu ar nosaukumu test.cpp. Atveriet šo failu, izmantojot savu iecienītākais koda redaktors un pievienojiet tam šādu kodu.

#ietver
starpt a = 15;

starptgalvenais()
{
ja (3 10)
{
std::cout << "foo" << std::endl;
}
cits
{
std::cout << "boo" << std::endl;
}

atgriezties0;
}

Varat izmantot šo komandu, lai apkopotu un palaistu kodu:

g++ test.cpp -o Pārbaude

Tagad jums ir programma ar nosaukumu Pārbaude. Palaidiet programmu un pārbaudiet tās izvadi.

Palaižot šo programmu, C++ uzskatīja, ka 3 < 15 < 10 ir patiess. Kāpēc rezultāts varētu būt šāds, lai gan tas ir matemātiski nepareizs apgalvojums?

C++ salīdzināšanas problēmas cēloņi

Tāpat kā lielākā daļa programmēšanas valodu, C++ nolasa kodu no kreisās puses uz labo. Katrs salīdzināšanas operators rada Būla vērtību. Būla vērtības nozīmē ne tikai patiesu un nepatiesu; tiem ir matemātisks ekvivalents.

Darbības princips a dators ir atkarīgs no vieniniekiem un nullēm. Datoram kaut kā rezultāts ir patiess vai nepatiess. Datorprogrammas parasti uzskata skaitli 1 kā patiesu un skaitli 0 kā nepatiesu.

Vēlreiz pārbaudiet salīdzināšanas problēmu un izlasiet apgalvojumu no kreisās puses uz labo; jūs redzēsiet, ka ir divi dažādi salīdzinājumi. Pirmais salīdzinājums ir starp skaitļiem 3 un 15. Tā ir patiesa vērtība, jo 3 ir mazāks par 15.

Otrais salīdzinājums ir starp šo rezultātu un skaitli 10. Tā kā tam ir jāveic skaitlisks salīdzinājums, C++ klusi pārvērš Būla patieso vērtību uz 1. 1 ir mazāks par 10, tāpēc kopējais rezultāts ir patiess.

Noslēgumā jāsaka, ka, lai gan šķiet, ka tas ir matemātiska kļūda, šis apgalvojums attiecas uz C++ un datoriem.

Kā atrisināt salīdzināšanas problēmas programmā C++

C++ kopā ar vairumu citu programmēšanas valodu loģiskam salīdzinājumam izmanto atšķirīgu sintaksi nekā tradicionālā matemātika. Matemātiskā izteiksme 3 < a < 15 nozīmē “3 ir mazāks par a un a ir mazāks par 15. Tomēr, kā redzējāt, C++ šo izteiksmi interpretē atšķirīgi.

Lai attēlotu un valodā C++, izmantojiet operatoru &&. Pēc tam varat sasaistīt Būla izteiksmes un veidot loģiku, izmantojot tādus operatorus kā && pārstāvēt UN, || pārstāvēt VAI, un ! pārstāvēt NE. Valodas patīk Java izmanto tos pašus loģiskos operatorus.

Izmantojot pareizo loģisko operatoru, varat novērst kļūdu iepriekšējā piemērā:

#ietver
starpt a = 15;

starptgalvenais()
{
ja (3 < a && a < 10)
{
std::cout << "foo" << std::endl;
}
cits
{
std::cout << "boo" << std::endl;
}

atgriezties0;
}

Tagad šis kods pārbaudīs, vai vērtība a ir lielāka par 3 un vai vērtība a ir mazāka par 10. Apkopojiet un palaidiet programmu un novērojiet rezultātu.

Iepriekšējā piemērā tika drukāts “foo”, bet programma tagad drukā “boo”, kā paredzēts. Salīdzinājuma kreisās puses Būla vērtība (3 < a) ir patiesa. Labās puses vērtība (a < 10) ir nepatiesa. Kopš patiess un nepatiess ir vienmēr viltus, kopējā izteiksme tiek novērtēta kā nepatiesa, tāpēc nosacījums neizdodas un cits bloka skrējieni.

Mēģiniet pārslēgt UN (&&) operators uz VAI (||) un novērojot atšķirīgo rezultātu.

Loģisko pārbaužu nozīme C++ valodā

Loģiskie salīdzinājumi programmā C++ ietver Būla vērtību un salīdzināšanas operatoru izmantošanu. Pārliecinieties, ka izmantojat pareizās Būla vērtības un salīdzināšanas operatorus, lai kontrolētu programmu darbību. Slikti veidotas izteiksmes var būt grūti pamanīt, jo C++ bieži rīkojas savādāk, nevis pilnībā neizdosies.

Tagad jūs zināt, kā kompilatori ignorē šo problēmu un katru salīdzinājumu uzskata par Būla vērtību, lasot no kreisās uz labo pusi. Uzmanieties no šīs problēmas jebkurā valodā, ko lietojat, un iemācieties atpazīt tās ietekmi, lai varētu būt soli priekšā.