Pojasnjenje zadatka

Pojasnjenje zadatka

offline
  • Pridružio: 06 Sep 2007
  • Poruke: 2

Molila bih ako mozete da mi pomognete u vezi ovog zadatka posto imam ispit iz C koji se bazira na Krausovoj knjizi a malo mi bas ne ide ili ne znam gde gresim.
Zadatak glasi: Koje su vrednosti promenljivih a i b, nakon izvršavanja izraza:
a=1,b=2,a+=sizeof(char)>sizeof(short) ? sizeof(float)>sizeof(double) ? ++b+a:--b+a:++b-a

Ovde imamo ternarni operator pri cemu je drugi operand takodje ternarni operator (1?(2?X:Y) :3).
Sada ja radim ovako: sizeof(char)>sizeof(short) je false samim tim je jednako 0 pa je onda a+=sizeof(char)>sizeof(short) ili a=a+sizeof(char)>sizeof(short) jednako a=1+0=1. Posto je vrednost prvog operanda logicka istina(a=1) onda se izracunava vrednost drugog operanda(da je vrednost bila logicka neistina a=0 onda bi se racunala vrednost treceg operanda). Posto je drugi operand takodje ternarni operator ponavljm postupak pa dobijm da je sizeof(float)>sizeof(double) takodje false tj. jednako nuli pa onda racunam vrednost izraza --b+a a to je nova vrednost b tj. b=b-1 pa je b=2-1=1 a a se nije promenilo i ostalo je a=1. Medjutim ovo resenje nemam medju ponudjenim odgovorima pa ne znam da li gresim.
I da koliko je 2%5 tj ostatak deljenja celobrojnih operanada 2 i 5?

Poz



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 16 Jun 2005
  • Poruke: 2392
  • Gde živiš: Beograd

Ovako, posto je sizeof(char) > sizeof(short) netacno, izvrsava se samo ++b-a, tu je b povecano za jedan, a onda je od njega oduzeto a (3-1=2) i to je dodato na a, pa su resenja a=3, b=3.

Inace 2%5=2



offline
  • Pridružio: 06 Sep 2007
  • Poruke: 2

Nije mi jasno zasto je ++b-a ali pp da je zbog toga sto ternarni operator ima smer grupisanja zdesna ulevo pa se tek onda na kraju izracunava ovaj deo a+=
Hvala na pomoci

offline
  • Pridružio: 16 Jun 2005
  • Poruke: 2392
  • Gde živiš: Beograd

Pa, to je jer je tako napisan kod, to je u stvari kao da pise (mislim da ces ovako lakse da razumes):

if(sizeof(char)>sizeof(short)){
if(sizeof(float)>sizeof(double)) a+=++b+a;
else a+=--b+a;}
else a+=++b-a;

Prvo se izvrsava ++b (2+1), pa b-a (3-1) i na kraju se to doda na a (1+2).

Ko je trenutno na forumu
 

Ukupno su 6338 korisnika na forumu :: 61 registrovanih, 5 sakrivenih i 6272 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 04bokibole, 357magnum, A.R.Chafee.Jr., AK - 230, Asteker, AudioTehnica, Bane san, Bane5, bbogdan, Bojan85, bpop, BSD, C-Gun, cenejac111, Dare, darkdruid72, darkojbn, Denaya, Despot Đurađ, Djole3621, djuradj, doktor097, DonRumataEstorski, drpera, FOX, Giro77, Hans Gajger, ibssa, istokzapad, Jecmendo, JOntra, Jozo74, leopard83, MagicniHerpes, Malik, mat, medaTT, Metanoja, Milan A. Nikolic, milenko crazy north, mir, Mićko, mux, nebkv, nekdo, nelezele, Nepopravljivi, Nobunaga, Nole, PITT, precan, Ray1973, RD84, Sinisa76, Smiljkovich, Tihi86, tubular, vazduh, Vlada78, vrgudinac, x011