Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C: kako reći kompajleru da varijabla nije nula?

[es] :: C/C++ programiranje :: C/C++ za početnike :: C: kako reći kompajleru da varijabla nije nula?

[ Pregleda: 1948 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

aleksazr
zrenjanin

Član broj: 196784
Poruke: 242
...148.91.adsl.dyn.beotel.net.



+11 Profil

icon C: kako reći kompajleru da varijabla nije nula?14.08.2016. u 13:04 - pre 33 meseci
U okviru neke rutine imam deklarisanu varijablu v i odmah je inicijalizujem rutinom getINT():

int v = getINT();

getINT neće nikad vratiti nulu, kako to da kažem kompajleru, da varijabla v nije nula?

Mogu ovako, ali to generiše kod:
if (v == 0) return; // odavde pa nadalje, kompajler zna da je v != 0

Može nešto bez generisanja koda?
CYRfree 2.0.5 - ako bi ćirilicu radije čitali kao latinicu.
Serbian Latin keyboard layout 12-01-2019 - raspored za većinu QWERTY tastatura sa našeg tržišta.
http://users.beotel.net/~gwh/
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4860
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+622 Profil

icon Re: C: kako reći kompajleru da varijabla nije nula?14.08.2016. u 14:20 - pre 33 meseci
Ne znam tačno šta želiš da postigneš, ali svakako pogledaj i ASSERT:

http://www.cplusplus.com/reference/cassert/assert/
 
Odgovor na temu

aleksazr
zrenjanin

Član broj: 196784
Poruke: 242
...148.91.adsl.dyn.beotel.net.



+11 Profil

icon Re: C: kako reći kompajleru da varijabla nije nula?14.08.2016. u 15:16 - pre 33 meseci
Odprilike znam šta radi ASSERT, ali to je C++.
Trebao sam napisati u tekstu da je C, a ne samo u subjectu.
Hvala u svakom slučaju.

Da uverim kompajler da je varijabla v != 0, kako on ne bi morao da testira.
Hteo sam da koristim FOR petlju, ali moraću DO-WHILE.
Nije da bi se dobilo nešto na brzini, ali ako ja već znam da ne može biti nula - zašto da testira.


CYRfree 2.0.5 - ako bi ćirilicu radije čitali kao latinicu.
Serbian Latin keyboard layout 12-01-2019 - raspored za većinu QWERTY tastatura sa našeg tržišta.
http://users.beotel.net/~gwh/
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 2426
109.72.51.*



+540 Profil

icon Re: C: kako reći kompajleru da varijabla nije nula?14.08.2016. u 23:56 - pre 33 meseci
1. assert je C...
2. Kompajler nece generisati kod specificno za nulu...
press any key to continue or any other to quit....
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1223



+91 Profil

icon Re: C: kako reći kompajleru da varijabla nije nula?15.08.2016. u 14:10 - pre 33 meseci
Kakvo je to neželjeno testiranje na nulu, koje kompajler radi? Misliš na for petlju? Najbolje je da je pretvoriš u do-while petlju, jer je tako očigledno šta želiš da postigneš. Programski kod ne služi samo kompajleru, nego i tebi, i ne samo sadašnjem tebi nego i budućem tebi, koji će zagarantovano zaboraviti neke detalje u vezi s kodom koje sada imaš u glavi. do-while petlja je najbolji način da kažeš i kompajleru i budućem tebi da ta petlja ne treba da testira uslov na početku petlje, nego na kraju.
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 891
*.dynamic.isp.telekom.rs.



+170 Profil

icon Re: C: kako reći kompajleru da varijabla nije nula?15.08.2016. u 19:04 - pre 33 meseci
Za tako nesto najbolje da se prebacis u C++. Posto ces tamo moci prilicno lako da postavis constraint prosto dodavanjem nove definicije. Recimo mozes da definises klasu koja prima int ali koji je uvek veci od nula (to proveris u konstruktoru) pa zatim nadalje u programu koristis uvek tu klasu gde ti treba int > 0. To je sustina type systema, pride C++ ti omogucava da prosledjujes po referenci pa samim tim mozes biti skoro 100% siguran da klasa (tj. instanca koju budes prosledjivao) nece biti null (osim ako ne radis neke egzibicije sa castingom). Naravno ovo moze biti overkill za neke stvari, posto klasa ima veci overhead u odnosu na prost integer, ali to biras sam - performance vs safety :)
 
Odgovor na temu

aleksazr
zrenjanin

Član broj: 196784
Poruke: 242
...148.91.adsl.dyn.beotel.net.



+11 Profil

icon Re: C: kako reći kompajleru da varijabla nije nula?16.08.2016. u 17:08 - pre 33 meseci
Da, mislio sam na for petlju... i prešao sam na do-while.

Nisam znao da assert ima i za C... ali, koliko znam, assert proverava run-time,
a to sam hteo da izbegnem. (napisao sam: Može nešto bez generisanja koda?)

A C++ bih radije izbegao :)
CYRfree 2.0.5 - ako bi ćirilicu radije čitali kao latinicu.
Serbian Latin keyboard layout 12-01-2019 - raspored za većinu QWERTY tastatura sa našeg tržišta.
http://users.beotel.net/~gwh/
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: C: kako reći kompajleru da varijabla nije nula?

[ Pregleda: 1948 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.