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 1079 korisnika na forumu :: 81 registrovanih, 9 sakrivenih i 989 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: A.R.Chafee.Jr., apostata, Asteker, Automaticar, berste23, Besnik, bokisha253, BORUTUS, BZ, carinko, Centauro, Cicumile, Cirkon, Colt D, Cvetkovic, darcaud, dekiz, desmeki, Dorcolac, draganca, DS01, duro1990duro, Dusko_Dugousko, elenemste, Ercomero, g_g, gaga23, Georgius, Giskard, Gogi_avio, Hans Gajger, Hemi, iceburn, ivan1973, jimi_agf, jodzula, kaput21, kingkong1947, Kole1975, koneks, Koridor, Koser, luja, Magarac, marewfc, mat, mercedesamg, Metanoja, MiljanXD, Milometer, Miskinn, MK10, mm1811, monomah, nebojsag, neutrino, NklJov123, okopanja, Profica, proka89, radionica1, renvoi, repac, RJ, s0ne, sickmouse, stingD, tecataki, TheDictator, they live, Tristan_Bantam, Troja, TRZH92, vidra1, vladaa012, Vlado82, vrgudinac, YugoSlav, Zavulon, Zmajac, |_MeD_|