<div dir="ltr">Ale no tak, jde prece psat krasne prehledne i v ASM nabo BASICu.<div>A stejne tak jde psat prasacky i v Pascalu, Jave ci cemkoliv dalsim.</div><div><br></div><div>A ohledne 0 vs NULL - kazda sranda neco stoji. Treba 1 bit informace a par instrukci pri vyhodnocovani...</div><div>Marek</div></div><div class="gmail_extra"><br><div class="gmail_quote">2014-12-31 11:17 GMT+01:00 Admin HWnews <span dir="ltr"><<a href="mailto:hwnews@cncnet.info" target="_blank">hwnews@cncnet.info</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Chce se mi zvracet...to je teda neskutecnej hnus. Opet se presvedcuju, ze cokoli co zavani *C* syntaxi mi nesmi na oci. 22 let jsem bez toho vydrzel a doufam, ze jeste jednou tak dlouho vydrzim.<br>
<br>
Opravdu zlatej Pascal - nechapu nekoho, ze argumentuje tim, ze je uzvanenej a rozvlacnej - C je sice usporne, ale pak si to clovej vynahradi v komentovani kodu a v diskuzich na netu co vlastne by to mohlo delat.<br>
<br>
Nastesti i DB se zatim drzi toho, ze polozka 0 neni to same co null.<br>
<br>
RV<br>
<br>
Dne 31.12.2014 v 10:24 Jan Waclawek napsal(a):<div class="HOEnZb"><div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
NULL je ve větąinou (ne-li vľdy) definován jako 0 nebo (void*)0 takľe<br>
větąina programátorů bere NULL a 0 jako synonymum<br>
</blockquote>
<br>
to jako kde jste k tomuhle prisel? obecne to rozhodne neplati - pak je<br>
jaksi zbytecne mit 0 a null<br>
<br>
</blockquote>
<br>
<br>
To si mylis so stavom zo skutocnych programovacich jazykov, pravdepodobne z<br>
Pascalu. Tam ano, nil je specialna konstanta netypovaneho smernika<br>
(pointer) u ktoreho je zarucene, ze sa nerovna ziadnemu inemu smerniku; to<br>
je vsetko (ISO/IEC 7185:1990 6.4.4). Vobec, u skutocnych programovacich<br>
jazykov je zbytocne spekulovat o *hodnote* smernika, to je interna<br>
zalezitost prekladaca a programatora do toho nic nie je.<br>
<br>
C naproti tomu vznikol ad-hoc bastlenim, a bol len dodatocne kodifikovany,<br>
takze hodnoty pointrov su tradicne pokladane priamo za adresy ukazovanych<br>
objektov; dalej 0 a NULL su v C tradicne ekvivalentne (pozor, NULL nie<br>
null, lebo C je case sensitive). Tipujem, ze u PDP-11 je na adrese 0<br>
nejaky reset vektor alebo nieco podobne, na ktore nikdy nenastane problem<br>
ukazovat, takze to bolo pre Thomsona a Ritchieho dost dobre ako unikatny<br>
pointer co sa nerovna ziadnemu inemu; no a uz to tak zostalo, bez ohladu<br>
na problemy ktore to prinasa. Neskorsie "normovanie" z toho potom robi<br>
takuto splet:<br>
<br>
<br>
C99, 6.3.2.3#3<br>
An integer constant expression with the value 0, or such an expression cast<br>
to type<br>
void *, is called a null pointer constant.(55)<br>
<br>
(55)  The macro NULL is defined in <stddef.h> (and other headers) as a null<br>
pointer constant; see 7.17.<br>
<br>
If a null pointer constant is converted to a<br>
pointer type, the resulting pointer, called a null pointer, is guaranteed<br>
to compare unequal<br>
to a pointer to any object or function.<br>
<br>
#4<br>
Conversion of a null pointer to another pointer type yields a null pointer<br>
of that type.<br>
Any two null pointers shall compare equal.<br>
<br>
<br>
To pouzitie v if () je komplikovanejsie: C99, 6.8.4.1#2:<br>
In both forms [if() aj if()else], the first substatement is executed if the<br>
expression compares unequal to 0.<br>
<br>
pre "compares unequal" musime siahnut po 6.5.9 Equality operators:<br>
#5<br>
Otherwise, at least one operand is a pointer. If one operand is a pointer<br>
and the other is a<br>
null pointer constant, the null pointer constant is converted to the type<br>
of the pointer.<br>
<br>
<br>
Takze ta 0 pre implicitne porovnanie z 6.8.4.1#2 je podla prvej casti prvej<br>
vety z 6.3.2.3#3 "null pointer constant", ktora je potom podla 6.5.9#5<br>
implicitne pretypovana na pointer takeho typu ako je "operand" v tom if(),<br>
tym z implicitnej nuly podla 6.3.2.3#4 vznikne null pointer, pre ktory je<br>
podla druhej vety z 6.3.2.3#3 zarucene, ze sa nerovna ziadnemu skutocnemu<br>
pointru; sucasne podla 6.3.2.3#4 je zarucene, ze sa bude rovnat<br>
akemukolvek nulovemu pointru, ktorym je aj makro NULL podla footnotu<br>
(55)...<br>
<br>
wek<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
______________________________<u></u>_________________<br>
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/<u></u>listinfo/hw-list</a><br>
<br>
</blockquote>
______________________________<u></u>_________________<br>
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/<u></u>listinfo/hw-list</a><br>
</div></div></blockquote></div><br></div>