Stranica 1 od 1

zna li neko da barata programskim jeziko C?

Poslato: 12 Jun 2007, 19:54
od kralj_biranih_reci
trebala bi mi mala pomoc:D

hvala unapred:)

Poslato: 12 Jun 2007, 19:58
od KiWi

ja položio osnove konzolarnog programiranja u C#u .. šta ti konkretno treba?

Poslato: 12 Jun 2007, 20:02
od kralj_biranih_reci
treba mivrednost izraza --a?a--+b:a---c, ako je a jednako 1, b jednako 2 i c jednako 3:D

Poslato: 12 Jun 2007, 20:09
od Sixto
Utero vam, sta ste vas dvojica sad rekli ako ja znam ubi me!

Poslato: 12 Jun 2007, 20:10
od kralj_biranih_reci
ako ne znas bezi tamo:domino:

Poslato: 12 Jun 2007, 20:31
od Sixto
:(

Poslato: 12 Jun 2007, 21:00
od HAL 9000
-3 :)

Poslato: 12 Jun 2007, 22:12
od 2Q2Bstr8
evo korak po korak:

a=1, b=2, c=3
--a?a--+b:a---c

prvo umanjiš a zbog prefiksnog operatora --, i sada je a=0.

onda se razrešava ternarni ?: operator, koji evaluira levu stranu ako je izraz pre ? tačan. ako nije, evaluira se desna strana. ali uvek samo jedna. s obzirom da u C-u ne postoji boolean tip, false je zapravo konstanta čija je vrednost 0, dok je true 1, pa vidimo da će se evaluirati desna strana terarnog operatora.

dakle, sada nam treba vrednost izraza a---c. ovde zapravo imamo dve operacije. biće jasnije ako se upišu zagrade. zbog prioriteta operatora -- nad operatorom - zapravo imamo (a--)-c. ovde je u pitanju postfiksni operator, pa se zapravo dobija 0-3 i rezultat je -3.

nadam se samo da nisam pobrkao asocijativnost, jer u slučaju desne asocijativnosti bismo imali a-(--c), što bi dalo -2.

možda da neko začas napiše programče, pa javi rezultate. ;)

Poslato: 12 Jun 2007, 23:15
od kralj_biranih_reci
ahaaaaa....a ja sam mislio posto su unarni operatori prioriteta 14 i grupisu se s desna na levo da se prvo svi oni umanje i da se krece sa desne strane, pa se prvo umanji c......jel bi imalo to smisla a?:hekla:

Poslato: 13 Jun 2007, 01:07
od iJazz
Originally posted by 2Q2Bstr8
možda da neko začas napiše programče, pa javi rezultate. ;)
Proverio... -3 :)

Poslato: 13 Jun 2007, 22:24
od kralj_biranih_reci
hvala, krasni ste!:kolo:

Poslato: 16 Jun 2007, 09:54
od Katengl
Originally posted by 2Q2Bstr8
s obzirom da u C-u ne postoji boolean tip, false je zapravo konstanta čija je vrednost 0, dok je true 1, pa vidimo da će se evaluirati desna strana terarnog operatora.
U stvari, kao istinita vrednost se uzima svaka celobrojna vrednost različita od 0. A mislim da true i false ni nisu definisane konstante u #define smislu.

Poslato: 16 Jun 2007, 16:10
od 2Q2Bstr8
jesu, definisane su. macro preprocessor ih zamenjuje upravo nulom i jedinicom.

zapravo, po ANSI C-u i stoji da je true svaka nenula vrednost, ali to je bilo potrebno definisati na taj način zbog nedefinisane konverzije drugih tipova u boolean. u suprotnom se ne bi znalo kako da se prevede npr. "if (i=3+4)". jeste glup izraz, ali C daje toliku slobodu da se bez problema ovako nešto može, a zaista se često i koristi.

@kralj_biranih_reci: nisu svi unarni operatori desnog grupisanja. prefiksni jesu, ali postfiksni nisu. kako bi izračunao "a--" da je operator desnog grupisanja?

Poslato: 16 Jun 2007, 20:51
od Katengl
Originally posted by 2Q2Bstr8
jesu, definisane su. macro preprocessor ih zamenjuje upravo nulom i jedinicom.
Ja sam upravo poterao ovaj programcic:


main () {
int i=1;
if (i==FALSE) ;
}

i kompajler prijavljuje:

'FALSE' undeclared (first use in this function)

Osim toga, znam da smo mi na vezbama uvek to rucno definisali, i tako boolean tip pravili vestacki, jer on u C-u ni ne postoji. A ako su definisane u nkom zaglavlju, onda u pitanju nije standard.
Originally posted by 2Q2Bstr8
zapravo, po ANSI C-u i stoji da je true svaka nenula vrednost
Zar ja to nisam rekao u proslom postu? :)
Originally posted by 2Q2Bstr8
@kralj_biranih_reci: nisu svi unarni operatori desnog grupisanja. prefiksni jesu, ali postfiksni nisu. kako bi izračunao "a--" da je operator desnog grupisanja?
Koliko ja znam, ++ i -- se grupisu zdesna nalevo bez obzira na varijantu, a gospodin Kraus se slaze sa mnom,proverio sam. Osim toga, ako je dat samo jedan operator, onda nema smisla razmisljati o smeru grupisanja i prioritetima, zar ne?

Poslato: 17 Jun 2007, 23:08
od kralj_biranih_reci
Original

Koliko ja znam, ++ i -- se grupisu zdesna nalevo bez obzira na varijantu, a gospodin Kraus se slaze sa mnom,proverio sam. Osim toga, ako je dat samo jedan operator, onda nema smisla razmisljati o smeru grupisanja i prioritetima, zar ne?



:mazi:



off:ubicu gospodina krausa:die:

Poslato: 17 Jun 2007, 23:13
od kralj_biranih_reci
aj sad mi recite jel ovaj rezon dobar:

prvo odradim sve unarne operatore grupisuci ih s desna na levo, sto znaci smanjim c za 1 pa je c sad dva, pa smanjim a za 1 pa je a sad nula, pa opet smanjim a za 1 pa je sad a -1....to znaci da racunam samo desnu stranu -1-2 jednako -3?:D

Poslato: 18 Jun 2007, 00:34
od iJazz
Teško... 2Q2bstr8 ti je dao dobro objašnjenje.

Dakle, razlika između pre- i postfiksnih operatora je u tome što se u slučaju prefiksnog operatora prvo izračuna nova vrednost promenljive, koja se onda koristi u izrazu, a u slučaju postfiksnog operatora nova vrednost promenljive se računa tek nakon izračunavanja izraza.

Inače, izraz koji si dao se grupiše na sledeći način:
((--a) ? ((a--) + b) : ((a--) - c))

@2Q: U C-u se i prefiskni i postfiksni ++ i -- grupišu s desna na levo. U C++ su uveli razliku u grupisanju. Prefiksni se grupišu D->L, a postfiksni L->D.

Poslato: 19 Jun 2007, 18:47
od 2Q2Bstr8
onda sam definitivno pobrkao C i C++ s obzirom da u potonjem radim već neko vreme.

@Katengl: izvukao si to iz konteksta. ta rečenica se i odnosi na moju prethodnu, a ono "i" znači da se slažem sa time što si napisao.

takođe, što se grupisanja tiče: ono uvek postoji, bez obzira da li stoji jedan ili 300 operatora.

Poslato: 19 Jun 2007, 19:25
od Katengl
Grupisanje operatora se odnosi na redosled izvrsavanja operatora, i ukoliko je data naredba a--;, onda grupisanje (koje je u ovom slucaju trivijalno) nema nikakvog uticaja na krajnji rezultat. To je bila poenta.
A sto se tice logickih vrednosti, samo mi nije bilo jasno sta si novo hteo da kazes time.