RE: Chyba v C - velmi podivné chování
Jan Waclawek
konfera na efton.sk
Úterý Duben 21 01:17:07 CEST 2020
Hm, tak ja vidim vyhody skor v tych 6 ifoch a 1 pomocnej premennej...
Ale ak by si nahodou nasiel odkaz, kde ten JW z minulosti povedal, ze
vysledkom podmienky nemusi byt 0 alebo 1, tak by som Ti bol vdacny.
wek
----- Original Message ---------------
Take se po pár mìsících mùu vrátit k tomu, e jedna z výhod C je monost
dìlat vìci, jako:
If ((a<2)+(a>b)+(x<y)+(a%x==12)+(b<y) > 3) {
Co v jiných jazycích vede na 6 ifù a 1 pomocnou promìnnou.
PH
Od: Jan Waclawek
Hm, tak potom by som mal asi tomu JW z minulosti jednu tresnut...
Konkretne teda, C99, 6.5.8 Relational operators #6:
Each of the operators < (less than), > (greater than), <= (less than or
equal to), and >=
(greater than or equal to) shall yield 1 if the specified relation is true
and 0 if it is false. 92)
The result has type int.
Ten footnote 92) je kuzelny:
The expression a<b<c is not interpreted as in ordinary mathematics. As the
syntax indicates, it
means (a<b)<c; in other words, ??if a is less than b, compare 1 to c;
otherwise, compare 0 to c??.
wek
----- Original Message ---------------
Mil jsem nijak za to, ?e to byl právi jistý JW, kdo mi tu onehdá vyeetl, ?e
spoléhat se, ?e výsledkem podmínky je 0 nebo 1 není správné:-)
PH
Od: Jan Waclawek
> A jinak teda ten kód udilá to, ?e pokud je splnina podmínka v závorce, nastaví se bit 0 na výstupní (zda to bude bit 0 není zarueeno, ale jinak skoro jisté).
Preco by to nemal byt bit 0?
_______________________________________________
>>
>> DDRB |=(1<CLK_UP);
Další informace o konferenci Hw-list