Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cu ce va aparati de cainii agresi...

Nu imi platiti coletul cu cardul ...

Mi-au disparut amigdalitele ?

Exista vreun plan de terorizare p...
 Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 

Operatori

- - - - -
  • Please log in to reply
5 replies to this topic

#1
audrag5

audrag5

    New Member

  • Grup: Junior Members
  • Posts: 22
  • Înscris: 20.05.2018
Imi poate explica si mie cineva de ce rezultatul acestei sectiuni de cod este 300 si nu 30 sau altceva?

int a=0, b=1, c=2, d=3, e=1;
a=(b++,c++,d++,e++);
e=(a==0) ? b*=10 : c*=10, d*=10, e*=10;
cout << e << endl;

Multumesc

Edited by audrag5, 21 May 2018 - 09:28.


#2
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,440
  • Înscris: 10.08.2005
Intai ne explici tu de ce crezi ca este 30

#3
audrag5

audrag5

    New Member

  • Grup: Junior Members
  • Posts: 22
  • Înscris: 20.05.2018
Ma gandeam ca, deoarece partea de dupa ':' nu este intre paranteze rotunde, valoarea lui e ar trebui sa fie valoarea lui c*=10, c fiind 3 dupa incrementare, adica 30.

#4
sags

sags

    Senior Member

  • Grup: Senior Members
  • Posts: 9,951
  • Înscris: 24.04.2013
Uita-te bine pe precedenta operatorilor si pune paranteze (pentru tine, sa te ajute sa intelegi) care sa iti indice in ce ordine se fac calculele. Apoi calculeaza de mana si vezi ce iti da. Atentie ca si virgula e un operator, ca si ?:, *= si =. Si fa calculele pana la capat, ca lui e (si nu numai) i se aribuie valori in mai multe locuri.

#5
A10Warthog

A10Warthog

    Member

  • Grup: Moderators
  • Posts: 902
  • Înscris: 12.11.2017
Pornim de la ordinea operatorilor în C++. Deschide pagina și urmărește.

Am adăugat numărul liniilor pentru referință:

[1] int a=0, b=1, c=2, d=3, e=1;
[2] a=(b++,c++,d++,e++);
[3] e=(a==0) ? b*=10 : c*=10, d*=10, e*=10;
[4] cout << e << endl;


Linia 2: suffix increment pentru b, c, d și e. Variabila a ia valoarea lui e înainte de incrementare, așadar a = 1. Expresia evaluează doar ultima valoare, adică îl vede doar pe e. Atenție, a nu ia niciodată valoarea lui b, c sau d, pentru că evaluarea se face de la dreapta la stânga. Până acum avem:

a = 1; b = 2; c = 3; d = 4; e = 2;

Linia 3: Ne interesează (15) și (17) din tabelul cu prioritatea operatorilor. Operatorul ternar ( ? : ) are prioritate în fața virgulei. Linia 3 e echivalentă cu:

e = (a==0) ? (b*=10) : (c*=10);
d*=10;
e*=10;


a = 1, deci (b*=10) nu se execută și b rămâne neschimat. c*=10 se execută, așadar c = 30 și e = 30.
Apoi avem (d*=10), după care d = 40 și încă o modificare în variabila e, de unde e = 300.

După linia 3 avem:

a = 1; b = 2; c = 30; d = 40; e = 300;


Notă: în afara cazului în care vrei să participi la IOCCC, așa ceva nu o să treacă de code revew. Înțeleg că-s exerciții, dar vreau să mă asigur că n-ai vreun prof de info convins că e mult mai inteligent să scrii cod așa.

Edited by A10Warthog, 21 May 2018 - 14:06.


#6
audrag5

audrag5

    New Member

  • Grup: Junior Members
  • Posts: 22
  • Înscris: 20.05.2018
Am inteles acum ce rol are operatorul secvential pe linia [3] si de ce rezultatul este 300.

Multumesc!

Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate