[ aleksazr @ 14.08.2016. 13:04 ] @
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?
[ X Files @ 14.08.2016. 14:20 ] @
Ne znam tačno šta želiš da postigneš, ali svakako pogledaj i ASSERT:

http://www.cplusplus.com/reference/cassert/assert/
[ aleksazr @ 14.08.2016. 15:16 ] @
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.

[ Branimir Maksimovic @ 14.08.2016. 23:56 ] @
1. assert je C...
2. Kompajler nece generisati kod specificno za nulu...
[ Mihajlo Cvetanović @ 15.08.2016. 14:10 ] @
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.
[ negyxo @ 15.08.2016. 19:04 ] @
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 :)
[ aleksazr @ 16.08.2016. 17:08 ] @
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 :)