[elektro] Munka

hobilobi at gmail.com hobilobi at gmail.com
Thu Sep 15 00:53:33 CEST 2011


2011.09.14. 8:28 keltezéssel, Szima Gábor írta:
> On Wed, 14 Sep 2011, hobilobi at gmail.com wrote:
>
>> If ((adat&1)==0)
>>    "A" dolog végzése
>> else if ( (adat&1) == 1)
>>              "B" dolog végzése
>>          else
>>                  hiba jelzés
>>
>> Mikor rákérdeztem, hogy ez a hibajelzés mégis mikor fog bekövetkezni,
>> akkor kikérte magának, hogy értsem meg, Ő tesztelő volt és a nem várt
>> estekre is fel kell készülni. Hál istennek a próbaidő végén kirúgták.
> A GCC bugot kihozta volna (irtam itt par eve, hogy az if/else mindket aga
> lefutott, ha a feltetel menet kozben megvaltozott ;)
Ugyan semmi sem lehetetlen, de elég nehezen tudok ekkora fordító hibát 
elhinni. (sosem használtam GCC)
Egy ilyen hibának már a 0.0-ás verzióban ki kell buknia, akkora baklövés.

>
> if ( flag == 1 ) {
>
>    ...
>    flag = 0;
> }
> else {
>
>    ...
> }
>
> Es futott itt minden. En meg csak neztem. ;)
>
>

Ebben a példában (jó fordító esetén) sosem futhat le mindkét ág 
egyszerre, mert feltétel vizsgálat csak egyszer van.
Hiába állitod a flag-et 0-ra az if ágban, attól az else ág csak a 
következő ide kerüléskor fog lefutni. Persze lehet, hogy ez olyan 
gyorsan bekövetkezik, hogy kivűlről nézve úgy látszik mintha rögtön 
egymás után történne.



More information about the Elektro mailing list