ceckovy kviz 2 (hardcore)
Jan Waclawek
konfera na efton.sk
Středa Září 6 18:33:34 CEST 2023
Asi ano, ten moj argument bol dost nasilu. Na druhej strane to goto je
skutocne svinstvo; ja s Dijkstrom do pismenka suhlasim (a nesuhlasim s
Wirthovym premenovanim toho clanku).
Na druhej strane... C ma niekolko sposobov goto, jeden z nich je tzv.
computed goto znamejsie pod nazvom switch/case :-) (a break je dalsia
forma goto, dalej continue a return - zvykne sa hovorit "disrupted flow"
alebo take nieco). Ten if sa da urobit aj s tym switchom, teraz citujem z
Dereka Jonesa (tiez taky zdroj perverznosti):
switch (x)
default : if (prime(x))
case 2: case 3: case 5: case 7:
process_prime(x);
else
case 4: case 6: case 8: case 10:
process_composite(x);
A hned za tym je spomenty Duff's Device, samozrejme.
(Mimochodom, vsimni si, ze tam nie su svorkove zatvorky. Derek Jones to
uvadza kvoli tomu, lebo toto je z pohladu switch len jediny prikaz, prave
ten if; a ze case moze byt kdekolvek v ramci toho prikazu a stale to patri
k tomu switch(x). Akurat ze to je neobvykle, obvykle je mat zlozeny
prikaz/blok t.j. tie svorkove zatvorky. Tuto je to prepisane do
prelozitelneho kuska, ak by si si to chcel vyskusat:
volatile int x;
int main(void) {
switch (x)
default : if (x)
case 2: case 3: case 5: case 7:
x = 10;
else
case 4: case 6: case 8: case 10:
x = 20;
}
)
On ten pokyn nevyhodnocovat else v tej norme asi nie je nahodou.
wek
----- Original Message ---------------
>Este mi napadlo, ze keby sa else malo vyhodnocovat aj v pripade goto do
>bloku if, viedlo by to k nezelanym nasledkom. Upravim Tvoj priklad:
>
>volatile int k;
>volatile int pin2=0; //a nebodaj by bola pin2 neinicializovana :)
>
>if (InputPin1()) goto pin1_active;
>pin2=InputPin2();
>if (pin2) {
> pin1_active:
> k = 10;
>} else {
> k = 20;
>}
>
>Skutocna hodnota pinu 2 by sa ignorovala.
>
>miro
>
>On 06.09.2023 17:50, Miroslav ©inko wrote:
>> On 06.09.2023 17:39, Jan Waclawek wrote:
>>> Norme je fuk, ako sa zvyknu pisat prekladace.
>>
>> Jasne, ze prekladace maju byt napisane podla normy a nie naopak.
>>
>> Napisal som, ako prekladaju if-else. No a Ty si v norme dohladal, ze
>> prekladaju spravne :)
>>
>> miro
>_______________________________________________
>HW-list mailing list - sponsored by www.HW.cz
>Hw-list na list.hw.cz
>http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list