Aritmetičke operacije. Logičke operacije

7.2 Unarne operacije

Izrazi s unarnim operatorima grupirani su s desne strane:

unary_expression: izraz unary_operation izraz ++ izraz - sizeof izraz sizeof (type_name) (type_name) izraz simple_type_name (popis izraza) new type_name initializer opt new (type_name) delete izraz delete [ izraz ] izraz unary_operation: jedan od * amp; – ! ~ ++ –

Unarni * operator znači indirektnost: izraz mora biti pokazivač, a rezultat je lvrijednost koja referencira objekt na koji pokazuje izraz. Ako je izraz tipa "pokazivač na...", tada je tip rezultata "...".

Rezultat unarne operacije amp; je pokazivač na objekt na koji operand upućuje. Operand mora biti lvrijednost. Ako je izraz tipa "...", tada je tip rezultata "pokazivač na...".

Rezultat unarnog operatora + je vrijednost njegovog operanda nakon što su obavljene normalne aritmetičke transformacije. Operand mora biti aritmetičkog tipa.

Rezultat unarne operacije je negativna vrijednost njenog operanda. Operand mora imati cijeli tip. Izvode se uobičajene aritmetičke transformacije. Negativna vrijednost nepredznačene vrijednosti izračunava se oduzimanjem njene vrijednosti od 2n, gdje je n broj bitova u int.

Rezultat logičke operacije negacije! je 1 ako je vrijednost operanda 0, i 0 ako vrijednost operanda nije 0. Rezultat je int tip. Primjenjivo na bilo koju aritmetičku vrstu ili pokazivače.

Operacija ~ daje komplement vrijednosti operanda na jedan. Izvode se uobičajene aritmetičke pretvorbe. Operand mora biti cjelobrojnog tipa.

Iz knjige C++ autora Hill Murray

6.2.1 Binarne i unarne operacije Binarna operacija može se definirati kao funkcija članica koja uzima jedan parametar ili funkcija prijatelj koja uzima dva parametra. Stoga, za bilo koju binarnu operaciju, @ aa@bb može se interpretirati kao aa.operator@(bb) ili

Iz knjige Model zrelosti razvojnog procesa softver Paulk Mark

7.2 Unarni operatori Izrazi s unarnim operatorima grupirani su s desne strane prema: unarni_izraz: unarna_operacija izraz izraz ++ izraz – sizeof izraz sizeof (type_name) (type_name) izraz simple_type_name (popis izraza) new type_name initializer opt new (

Iz knjige Baze podataka: bilješke s predavanja autor Autor nepoznat

Operacije Operacija je svaki korak ili funkcija čije mentalno ili fizičko izvođenje ima određenu svrhu. Operacije uključuju sav rad menadžera i tehničkog osoblja za postizanje ciljeva projekta i

Iz knjige Vodič za pomoć u C++ autor Stroustrap Bjarne

Predavanje br.4. Relacijska algebra. Unarne operacije Relacijska algebra, kao što možete pretpostaviti, posebna je vrsta algebre u kojoj se sve operacije izvode na relacijski modeli podataka, tj. preko odnosa. U tabličnom smislu, odnos uključuje

Iz knjige Programski jezik C# 2005 i platforma .NET 2.0. autor Troelsen Andrew

2. Unarne operacije u jeziku strukturirani upiti U ovom odjeljku ćemo pogledati kako implementirati korištenje strukturiranog upitnog jezika Odaberite operatera već nam poznate unarne operacije selekcije, projekcije i preimenovanja. Važno je napomenuti da ako smo ranije

Iz knjige Osnove AS/400 od Soltis Franka

R.5.3 Unarni operatori Izrazi s unarnim operatorima izvode se s desna na lijevo unarni-izraz: postfiksni-izraz ++ unarni izraz -- unarni izraz unarni-operacija cast-expression sizeof unary-operation sizeof.

Iz knjige Windows Script Host za Windows 2000/XP autor Popov Andrej Vladimirovič

R.13.4.1 Unarni operatori Unarni operator s prefiksom može se specificirati nestatičkom funkcijom članom (§R.9.3), bez parametara, ili funkcijom koja nije član s jednim parametrom. Stoga, za bilo koju prefiksnu unarnu operaciju @, izraz @x može

Iz knjige Razvoj aplikacija u Linux okruženje. Drugo izdanje autor Johnson Michael K.

Operatori += i -= Ako učite C# s nešto C++ iskustva, možda ćete primijetiti da se kratice operatora koje uključuju operator dodjele (+=, -=, itd.) ne mogu preopteretiti. Ne brinite, prečaci operatora dodjele u C#

Iz knjige Programski jezik C za osobno računalo autor Bočkov S. O.

MI opcode Tablica 4.14 prikazuje dodjelu MI opcode bitova. Bit 3 specificira računalni ili nekomputacijski format naredbe. U drugom slučaju, funkcija koju treba izvršiti je kodirana u bitovima 5-15 operacijskog koda. Funkcija koju obavlja računalstvo

Iz knjige Jezik C - Vodič za početnike autor: Prata Steven

Unarni operatori Unarni operatori su operatori koji se primjenjuju na jedan operand (tablica A1.3). Unarni operatori Opis operatora - Obrnuti znak! Dodatak. Koristi se za promjenu vrijednosti Booleove varijable u

Iz knjige C++ za početnike autora Lippmana Stanleya

16.1. Tty operacije Tty uređaji pružaju ogroman broj mogućnosti obrade podataka; oni su među najsloženijim kernel uređajima. Možete konfigurirati opcije za obradu ulaznih i izlaznih podataka, kao i tijek podataka. Također je moguće kontrolirati ograničeno

Iz knjige Opis jezika PascalABC.NET autor RuBoard tim

Unarni operatori Unarni minus (-) Unarni operator minus izvodi aritmetičku negaciju svog operanda. Operand mora biti cijeli broj ili pomična vrijednost. Izvode se zadane konverzije operanda. Vrsta rezultata ista je kao pretvorena vrsta

Iz autorove knjige

Operacije Jezik C nudi bitwise logičke operacije i operacije pomaka. Zatim ćemo napisati vrijednosti u binarnom obliku tako da možete vidjeti kako se operacije izvode. U pravi programi cjelobrojne varijable ili konstante zapisane u

Iz autorove knjige

Operacije Sada pogledajmo što možete, a što ne možete učiniti s enum vrijednostima. Možete dodijeliti konstantu tipu enum varijabla koja isti tip enum feline pet;pet = tiger;Ne možete koristiti druge operacije dodjele: ljubimac += mačka; /* nevažeće */ Usporedba se može napraviti za identifikaciju

Iz autorove knjige

4.3. Usporedba i logičke operacije Simbol operacije Značenje Koristite! Logično NIJE!expr manje od exprxpr = Manje ili jednako expr=expr veće od exprexpr = veće ili jednako expr=expr == jednako expr==expr != nije jednako expr!=expr logično

Iz autorove knjige

Operacije is i as Operacija is koristi se za provjeru ima li varijabla klase navedeno dinamički tip. Operator as omogućuje vam sigurno pretvaranje varijable iz jednog tipa klase u drugi tip klase (za razliku od eksplicitnog pretvaranja klase).

Operatori i izrazi sastoje se od operacija i operanda koji se koriste za dobivanje vrijednosti. Pogledajmo osnovne operacije, koje ćemo podijeliti u sljedeće klase: unarne, primijenjene na jedan operand; binarni, primijenjen na dva operanda; ternarni operator (pojedinačan), primijenjen na tri operanda. Neke će operacije jednostavno biti navedene i detaljnije raspravljene kasnije.

Unarne operacije:

«-» - “unarni minus” primjenjuje se na aritmetičke operande (cijele brojeve, realne varijable ili konstante), rezultat operacije je vrijednost operanda sa suprotnim predznakom;

«+» - operacija “unarni plus” ne radi ništa, uvedena radi simetrije s operacijom “unarni minus”;

«*» - “pristup adresi”, operacija se primjenjuje na pokazivače, rezultat operacije je vrijednost objekta (operand) na koji pokazuje pokazivač;

«&» - “dobivanje adrese”, rezultat operacije je adresa objekta (varijabla);

«~» - operacija “bitwise negation” odnosi se samo na cjelobrojne operande, rezultat operacije je cjelobrojna vrijednost u kojoj su bitovi izvornog operanda invertirani;

«!» - “logička negacija” (“logičko NE”), rezultira vrijednošću 0 ako je operand istinit (ne nula), i vrijednošću 1 ako je operand nula (u Visual C++ tip rezultata je bool), trebalo bi biti primijetio da u osnovnom ANSI standardu C nedostaje eksplicitno logički tip koji bi umjesto toga uzimao 2 vrijednosti: "true" i "false". Booleov tip U pravilu je korišten cjelobrojni tip, vrijednost 0 interpretirana je kao "lažna", svaka vrijednost osim 0 bila je "istinita";

(<тип>) – o "operaciji pretvorbe tipa" raspravljalo se ranije;

"veličina"– Operacija dimenzioniranja dizajnirana je za izračunavanje veličine objekta ili tipa u bajtovima i ima dva oblika:

veličina izraza ili veličina(izraza)

veličina(tip)

Inkrement (povećanje za 1), -- - dekrement (smanjenje za 1), imaju dva oblika zapisa - prefiks, kada se operacija piše ispred operanda, i postfiks. Ako se operatori koriste sami (postoji samo jedan operator po operatoru), tada nema razlike između ta dva oblika. Ako se operacija koristi unutar izraza s drugim operatorima, tada se u prefiksnom obliku prvo mijenja operand, a zatim se njegova nova vrijednost zamjenjuje u izraz, a u postfiksnom obliku stara vrijednost se supstituira u izraz, a zatim vrijednost operanda se mijenja. Na primjer,

int i=10, j;

j=++i; // Prefiksni oblik operacije

Kao rezultat izvršenja ovog fragmenta, ja I j bit će jednak 11 (varijabli j dodjeljuje se nova vrijednost i, uvećana za 1), ako promijenimo oblik operacije ++:

int i=10, j;

j=i++; // Postfiksni oblik operacije

zatim, nakon izvršenja ja bit će jednako 11, i j bit će jednako 10, varijabla j varijabli se dodjeljuje stara vrijednost ja, a zatim se povećava za 1. Operacije se najčešće primjenjuju na cjelobrojne operande, ali se mogu primijeniti i na stvarne operande, pa čak i na pokazivače.

Binarne operacije mogu se podijeliti u sljedeće klase:

Aritmetika:

«+» - binarni plus;

«-» - binarni minus;

«*» - množenje;

«/» - podjela;

% - dobivanje ostatka diobe.

Prve četiri operacije primjenjuju se na aritmetičke operande: cjelobrojne ili realne operacije «+» I «-» na ograničen način može se primijeniti na pokazivače. Operacija - «%» odnosi se samo na cjelobrojne operande.

Logično:

«&&» - logički I;

«||» - logički ILI;

«^» - logički isključivi ILI.

Operandi logičkih operacija mogu biti aritmetičkog tipa ili biti pokazivači, a operandi u svakoj operaciji mogu biti razne vrste. Ne izvode se pretvorbe tipa, svaki operand se procjenjuje u smislu njegove ekvivalentnosti nuli (operand, jednaka nuli, smatra se "lažnim", ne jednakim nuli - kao "istinitim"). U Visual C++ tip rezultata je int ili bool ovisno o vrsti operanda.

Bitno:

«&» - bitni AND;

«|» - bitovno ILI;

«^» - pobitno isključivi OR;

«>>» - bitni pomak udesno;

«<<» - bitni pomak ulijevo.

Ove se operacije primjenjuju samo na cjelobrojne operande i rade na njihovim binarnim prikazima. Prilikom izvođenja operacija «&», «|», «^» operandi se mapiraju po bitovima (prvi bit prvog operanda u prvi bit drugog, drugi bit prvog operanda u drugi bit drugog itd.).

Operacije pomaka pomiču binarnu reprezentaciju prvog operanda lijevo ili desno za broj binarnih znamenki navedenih u drugom operandu. Prilikom prebacivanja ulijevo «<<» ispražnjene znamenke vraćaju se na nulu. Kod pomaka udesno «>>» oslobođeni bitovi popunjavaju se nulama ako je prvi operand bez predznaka, a inače bitom s predznakom.

Odnosi (usporedbe):

“==” - jednako (ne smije se brkati s operatorom dodjele “=”);

“!=” - nije jednako;

">" - više;

«<» - меньше;

“>=” - veće ili jednako;

«<=» - меньше или равно.

Relacijski operatori uspoređuju prvi operand s drugim. Operandi mogu biti aritmetičkog tipa ili pokazivači. Rezultat operacije je vrijednost "true" (bilo koja vrijednost koja nije jednaka 0, obično 1) ili "false" (0). U Visual C++ tip rezultata je bool.

Zadaci:

"=" je jednostavno dodjeljivanje.

Prvi operand mora biti L-vrijednost; područje memorije gdje će biti pohranjen rezultat operacije. drugi - izrazom. Prvo se izračunava izraz na desnoj strani operacije, a zatim se njen rezultat zapisuje u memorijsko područje naznačeno na lijevoj strani. tzv , L-vrijednost(lijevo važeća vrijednost, može se koristiti lijevo od operacije dodjele), ovo je oznaka bilo kojeg izraza koji se obraća određenom području memorije u koje se vrijednost može pohraniti.

op= (gdje je op simbol binarne operacije) kombinirana je dodjela, kombinacija binarne operacije s operacijom dodjele, na primjer, “+=” je dodjela s zbrajanjem, po analogiji postoje operacije: “* =”, “/=”, “-= “, "%=", "&=", "|=", "^=" itd. Kombinirane operacije rade prema sljedećem pravilu:

i+=10; slično i=i+10;

Ostale binarne operacije, nabrojimo ih samo:

() – poziv funkcije;

– pristup elementu niza;

"." (“točka”) – pristup polju varijable strukturnog tipa;

“->” - pristup polju varijable tipa strukture kroz pokazivač;

“,” (“zarez”) – sekvencijalni izračun, može se staviti između izraza, izrazi se računaju sekvencijalno, rezultat operacije je rezultat drugog operanda (izraza).

Ternarna operacija:

"?:" je uvjetna operacija.

Format:<операнд1> ? <операнд2> : <операнд3>

Prvi operand ima tip koji zamjenjuje logički - aritmetički ili pokazivač ako prvi operand ima vrijednost "true", tada je rezultat operacije vrijednost drugog operanda, a ako je "false", tada je rezultat; operacije je vrijednost trećeg operanda. Primjer,

y= x>=0 ? x: -x;

varijabli y dodjeljuje se vrijednost modula varijable x.

C koristi sljedeću notaciju za logičke operacije:

|| logično "ili" (logično zbrajanje)

&& logičko "i" (logičko množenje)

Logičko "ne" (logička negacija)

Logičke konstante "true" i "false" označene su s true i false (to su ključne riječi jezika). Primjeri logičkih izraza:

bool a, b, c, d;

a = b || c; // logično "ili"

d = b && c; // logično "i"

a = !b; // logično "ne"

a = (x == y); // usporedba s desne strane

a = lažno; // laž

b = točno; // istina

c = (x > 0 && y != 1); // c je istina kada

// obje su usporedbe točne

Logička negacija ima najveći prioritet, slijedi logičko množenje, a logičko zbrajanje ima najniži prioritet.

Unarne i binarne operacije

Na temelju broja operanda uključenih u operaciju, operacije se dijele na unarne, binarne i ternarne.

Jezik C ima sljedeće unarne operacije:

Aritmetička negacija (negacija i zbrajanje);

~ bitwise logička negacija (komplement);

Logička negacija;

* deadresiranje (neizravno adresiranje);

&izračun adrese;

Unarni plus;

Povećanje (prirast);

Smanjenje (dekrement);

veličina veličine.

Unarne operacije izvode se s desna na lijevo.

Operacije inkrementiranja i dekrementiranja povećavaju ili smanjuju vrijednost operanda za jedan i mogu se pisati s desne ili s lijeve strane operanda. Ako je znak operacije napisan prije operanda ( oblik prefiksa), tada se operand modificira prije nego što se koristi u izrazu. Ako je znak operacije napisan iza operanda ( postfiksni oblik), tada se operand prvo koristi u izrazu, a zatim se modificira.

Prefiksni oblik

A++ postfiksni oblik

#uključi

#uključi

(//pokazuje razlike u izrazima

printf("a = %d b = %d \n",a,b);

printf("a = %d b = %d \n",a++,++b);

Proizlaziti

Za razliku od unarnog binarne operacije, čiji je popis dan u tablici, izvode se slijeva na desno.

Stol

Znak operacije

Operacija

Operativna grupa

Množenje

Multiplikativ

Ostatak dijeljenja

Dodatak

Aditiv

Oduzimanje

Pomak ulijevo

Radnje smjene

Pomak udesno

Relacijske operacije

Manje od ili jednako

Veće ili jednako

Nije jednako

Bitno I

Bitove operacije

Bitno OR

Bitno isključivi OR

Logično I

Logičke operacije

Logički ILI

Sekvencijalni izračun

Sekvencijalni izračun

Zadatak

Operatori dodjele

Množenje s dodjelom

Podjela sa dodjelom

Ostatak dijeljenja s dodjelom

Oduzimanje s dodjeljivanjem

Dodavanje s dodjelom

Lijevi pomak sa zadatkom

Desni pomak po zadatku

Bitno I s dodjelom

Bitno OR s dodjelom

Bitno isključivi OR s dodjelom

Lijevi operand operacije dodjele mora biti izraz koji se odnosi na memorijsku lokaciju (ali ne objekt deklariran s ključnom riječi const), takvi izrazi se nazivaju lijevo dopuštenim i uključuju:

Identifikatori podataka cjelobrojnih i plutajućih tipova, tipovi pokazivača, struktura, unija;

Indeksni izrazi, isključujući izraze tipa polja ili funkcije;

Izrazi odabira elementa (->) i (.) ako je odabrani element lijevo-važeći;

Unarni operatorski izrazi bez adrese (*), isključujući izraze koji se odnose na niz ili funkciju;

Izraz pretvaranja tipa ako rezultirajući tip ne premašuje veličinu izvornog tipa.

Kada pišete izraze, zapamtite da simboli (*), (&), (!), (+) mogu označavati unarnu ili binarnu operaciju.

Pretvorba tipa

Prilikom izvođenja operacija, implicitne pretvorbe tipa događaju se u sljedećim slučajevima:

Prilikom izvođenja operacija provode se uobičajene aritmetičke transformacije (o kojima smo gore govorili);

Prilikom izvođenja operacija dodjele, ako je vrijednost jednog tipa dodijeljena varijabli drugog tipa;

Prilikom prosljeđivanja argumenata funkciji.

Osim toga, C vam omogućuje eksplicitno pretvaranje vrijednosti iz jednog tipa u drugi.

U operacijama dodjele, tip vrijednosti koja se dodjeljuje pretvara se u tip varijable koja prima tu vrijednost. Dopuštene su pretvorbe tipova s ​​cijelim brojevima i tipovima s pomičnim zarezom, čak i ako takva pretvorba rezultira gubitkom informacija.

Pretvaranje tipova cjelobrojnih brojeva s predznakom. Cijeli broj s predznakom pretvara se u kraći cijeli broj s predznakom skraćivanjem najvažnijih bitova. Cijeli broj s predznakom pretvara se u duži cijeli broj s predznakom množenjem predznaka. Prilikom pretvaranja cijelog broja s predznakom u cijeli broj bez predznaka, cijeli broj s predznakom pretvara se u veličinu cijelog broja bez predznaka, a rezultat se tretira kao vrijednost bez predznaka.

Pretvaranje cijelog broja s predznakom u float događa se bez gubitka informacija, osim kod pretvaranja long int ili unsigned long int u float, gdje se često može izgubiti preciznost.

Pretvaranje tipova cijelih brojeva bez predznaka. Cijeli broj bez predznaka pretvara se u kraći cijeli broj bez predznaka ili predznaka skraćivanjem najvažnijih bitova. Cijeli broj bez predznaka pretvara se u duži cijeli broj bez predznaka ili predznaka dodavanjem nula s lijeve strane.

Kada se cijeli broj bez predznaka pretvori u cijeli broj s predznakom iste veličine, bitna reprezentacija se ne mijenja. Stoga se vrijednost koju predstavlja mijenja ako je bit predznaka postavljen (jednak 1), tj. kada je izvorni cijeli broj bez predznaka veći od maksimalnog pozitivnog cijelog broja s predznakom iste duljine.

Vrijednosti cijelog broja bez predznaka pretvaraju se u float tip pretvaranjem nepredznačenog cijelog broja u predznačenu dugu vrijednost, a zatim pretvaranjem predznačene duge vrijednosti u float tip. Pretvorbe iz unsigned long u float, double ili duga dvostruka proizvode se uz gubitak informacija ako je vrijednost koja se pretvara veća od maksimalne pozitivne vrijednosti koja se može prikazati za dugi tip.

Pretvorbe plutajućeg tipa. Vrijednosti tipa float pretvaraju se u tip double bez promjene vrijednosti. Double i long double vrijednosti pretvaraju se u float uz određeni gubitak preciznosti. Ako je vrijednost prevelika za float, javlja se underflow i prijavljuje se tijekom izvođenja.

Prilikom pretvaranja vrijednosti s pomičnim zarezom u cjelobrojne tipove, prvo se pretvara u long (razlomački dio vrijednosti s pomičnim zarezom se odbacuje), a zatim se long vrijednost pretvara u željeni cjelobrojni tip. Ako je vrijednost dugo prevelika, tada je rezultat konverzije nedefiniran.

Pretvorbe iz float, double ili long double u nepotpisani tip long se proizvodi uz gubitak preciznosti ako je vrijednost koja se pretvara veća od najveće moguće pozitivne vrijednosti predstavljene tipom long.

Pretvorba tipa pokazivača. Pokazivač na vrijednost jednog tipa može se pretvoriti u pokazivač na vrijednost drugog tipa. Međutim, rezultat može biti neizvjestan zbog razlika u zahtjevima za poravnanje i veličinu između tipova.

Pokazivač na tip void može se pretvoriti u pokazivač na bilo koji tip, a pokazivač na bilo koji tip može se pretvoriti u pokazivač na tip void bez ograničenja. Vrijednost pokazivača može se pretvoriti u cjelobrojnu vrijednost. Metoda pretvorbe ovisi o veličini pokazivača i veličini tipa cijelog broja kako slijedi:

Ako je veličina pokazivača manja ili jednaka veličini tipa cijelog broja, tada se pokazivač pretvara točno kao cijeli broj bez predznaka;

Ako je pokazivač veći od veličine cjelobrojnog tipa, tada se pokazivač prvo pretvara u pokazivač iste veličine kao i cjelobrojni tip, a zatim se pretvara u cjelobrojni tip.

Cjelobrojni tip se može pretvoriti u tip adrese pomoću sljedećih pravila:

Ako je tip cijelog broja iste veličine kao i pokazivač, tada se vrijednost cijelog broja jednostavno tretira kao pokazivač (cijeli broj bez predznaka);

Ako se veličina cjelobrojnog tipa razlikuje od veličine pokazivača, tada se cjelobrojni tip prvo pretvara u veličinu pokazivača (pomoću gore opisanih metoda pretvorbe), a zatim se rezultirajuća vrijednost tretira kao pokazivač.

Transformacije pri pozivu funkcije. Pretvorbe koje se izvode na argumentima prilikom pozivanja funkcije ovise o tome je li prototip funkcije (predna deklaracija) naveden s popisom deklaracija tipova argumenata.

Ako je dan prototip funkcije i uključuje deklaracije tipa argumenata, tada se na argumentima u pozivu funkcije izvode samo normalne aritmetičke pretvorbe.

Ove se pretvorbe izvode neovisno za svaki argument. Vrijednosti tipa float pretvaraju se u double, vrijednosti tipa char i short pretvaraju se u int, vrijednosti tipa unsigned char i unsigned short pretvaraju se u unsigned int. Implicitne pretvorbe također se mogu napraviti na varijablama pokazivača. Određivanjem prototipova funkcija možete nadjačati te implicitne pretvorbe i dopustiti prevoditelju da izvrši provjeru tipa.

Pretvorbe kod lijevanja tipova. Eksplicitna konverzija tipa može se postići pomoću operacije pretvaranja tipa, koja ima format:

(ime tipa) operand.

U sljedećoj notaciji, ime-tipa specificira tip u koji se operand treba pretvoriti.

int i=2; dugo l=2; dvostruko d; plovak f; d=(dvostruko)i * (dvostruko)l; f=(float)d; U ovom primjeru, vrijednosti i,l,d bit će eksplicitno pretvorene u tipove navedene u zagradama.

Jednodimenzionalni i višedimenzionalni nizovi.

Programi često moraju obraditi velike količine iste vrste podataka. Korištenje običnih varijabli za ovo je vrlo nezgodno: zamislite 1000 varijabli s različitim imenima i istog tipa koje se ne mogu obraditi u petlji. Ovaj problem se može riješiti korištenjem nizova.

Niz– skup varijabli (elemenata) istog tipa i zajedničkog naziva. Pristup do elementi niza provodi se jednostavnim navođenjem broja elementa - indeks.

U jeziku C numeriranje elemenata niza počinje od nule!

Primjeri deklaracija polja:

int a; // Cijeli niz a, veličina – 10 elemenata

dvostruki vektor; // Niz realni brojevi vect, ima 20 elemenata

char str; // Niz znakova s ​​1024 elementa

Kada deklarirate niz, možete odmah dodijeliti željene vrijednosti njegovim elementima (tj. inicijalizirati niz):

int x = (10, 20, 30, 40, 50);

char str = “Zdravo!”; // Automatski

int a = (1, 2, 3); // odrediti veličinu

Primjeri pristupa elementima niza:

printf("%d\n",x);

scanf(“%d”, &x);

Postoje tri bitne logičke operacije u C++:

  1. bitovno I, simbol: &
  2. pobitno isključivi ILI, zapis: ^
  3. uključivo po bitovima ILI, oznaka: |

Također u C++ postoje: OR - || ; I - && . Mnogi ljudi imaju pitanje: “Koja je razlika između operacija: & i && ; | i || ? Odgovor na ovo pitanje može se dobiti ako razumijete načelo rada bitnih logičkih operacija. Odmah mogu reći jednu stvar: logičke operacije && i || koriste se samo za konstruiranje logičkih uvjeta. Dok se bitne logičke operacije koriste u binarnoj aritmetici. Ove operacije rade s bitovima memorijskih ćelija, a operandi i rezultat mogu se navesti u drugom obliku, na primjer, u decimalnom. Zatim ćemo detaljno razmotriti svaku od operacija.

Bitno logička operacija I.
Oznake: X, Y – operandi; F – rezultat izvršenja logična operacija

Tablica 1—Tablica istine po bitovima I
X Y F
0 0 0
0 1 0
1 0 0
1 1 1

Iz tablice istine možemo vidjeti da će rezultat biti nula ako je barem jedan od bitova 0. Ako su oba bita 1, tada je rezultat 1.
Primjer s brojevima:
Da bismo pojednostavili izračune, uzmimo četverobitni (4-bitni binarni kod) pozitivni operandi. Prvo pretvaramo brojeve u binarni kod, a zatim izvodimo operaciju.

1111 = 15 1000 = 8
& 1001 = 9 & 1010 = 10
1001 = 9 1000 = 8
Rezultat je 9. Rezultat je 8.

Bitno ekskluzivno ILI .

Tablica 2—Tablica istinitosti isključivog ILI po bitovima
X Y F
0 0 0
0 1 1
1 0 1
1 1 0

Tablica istinitosti pokazuje da će rezultat biti nula ako su oba bita jednaka, u svim drugim slučajevima rezultat će biti 1.
Primjer s brojevima:

1111 = 15 1000 = 8
^ 1001 = 9 ^ 1010 = 10
0110 = 6 0010 = 2
Rezultat je 6. Rezultat je 2.

Uključivo po bitovima ILI .

Tablica 3 — Tablica istinitosti inkluzivnog ILI po bitovima
X Y F
0 0 0
0 1 1
1 0 1
1 1 1

Tablica istinitosti pokazuje da će rezultat biti nula ako su oba bita 0, u svim drugim slučajevima rezultat će biti 1.
Primjer s brojevima:

1111 = 15 1000 = 8
| 1001 = 9 | 1010 = 10
1111 = 15 1010 = 10
Rezultat je 15. Rezultat je 10.

Svi izračuni provedeni su samo s pozitivni brojevi, što se tiče negativnih brojeva, rezultat se formira nešto drugačije, ali ovo je materijal dizajna sklopa, a ne programiranja, i da budem iskren, tu nema ništa komplicirano. Slijedi primjer programa koji koristi bitwise logičke operacije.

// log.cpp: Definira ulaznu točku za aplikaciju konzole. #include "stdafx.h" #include << "\n 15 & 9 = " << (15 & 9) << endl; cout << "\n 15 ^ 9 = " << (15 ^ 9) << endl; cout << "\n 15 | 9 = " << (15 | 9) << endl; system("pause"); return 0; }

// kod Kod::Blokovi

// Dev-C++ kod

// log.cpp: Definira ulaznu točku za aplikaciju konzole. #uključi korištenje imenskog prostora std; int main(int argc, char* argv) ( cout<< "\n 15 & 9 = " << (15 & 9) << endl; cout << "\n 15 ^ 9 = " << (15 ^ 9) << endl; cout << "\n 15 | 9 = " << (15 | 9) << endl; return 0; }

Kod korištenja bitnih logičkih operacija u logičkim uvjetima, rezultat je isti kao kod korištenja logičkih operacija && || . I to je razumljivo, jer im je logika ista!!

U C++, lažni uvjet odgovara nultoj vrijednosti, a pravi uvjet odgovara bilo kojoj cjelobrojnoj vrijednosti većoj od nule. Dakle, konstante true i false tumače se kao cijeli brojevi, a zatim logičke operacije po bitovima tvore rezultat uvjeta, po bitovima. Ali izravna svrha logičkih operacija po bitovima je binarna aritmetika. Rezultat programa (vidi sliku 1).

15 & 9 = 9 15 ^ 9 = 6 15 | 9 = 15 Za nastavak pritisnite bilo koju tipku. . .

Slika 1 - C++ bitne logičke operacije