<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
{page:WordSection1;}
--></style></head><body lang=CS link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>No jo, ale to pak na místě použití není vidět, jaké že ty podmínky jsou. Předpokládám, že funkce bude dle firemních pravidel definována v nějakém externím souboru. Nedej bože, když takových sad podmínek bude víc. To pak budou názvy těch funkcí tak dlouhé, že určitě poruší nějaké délkové pravidlo, ohledně délky řádku:-)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Normálně bych pro zvýšení přehlednosti dal mezery okolo + (což jsem ale pro zabránění zalomení v mailu vynechal). Uvažoval bych ještě o další závorce okolo součtu.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Použití funkce pro mě přehlednost jasně snižuje:-) Navíc <span style='font-size:10.0pt;font-family:"Courier New"'>MIN_A_COUNT a</span> <span style='font-size:10.0pt;font-family:"Courier New"'>REMAING_COUNT</span> jsou vyloženě matoucí názvy pro podmínky nesouvisející s count:-) Jinak teda proti použití define nic nenamítám, běžně používám, ale zas je to zbytečná komplikace do ukázky typu kódu v mailu.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>K čemu teda máme různé jazyky, když bychom nemohli využívat jejich výhod?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>PH</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>Od: </b><a href="mailto:tomas.hamouz@divesoft.com">Tomáš Hamouz</a><o:p></o:p></p></div><p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:10.0pt;font-family:"Courier New"'>Myslím že lepší otázka zní, jak to napsat tak aby bylo na první pohled jasné co daný výraz vyhodnocuje, <br>bez ohledu na počet písmenek.<br><br>Abych planě nekritizoval, nejspíš bych to udělal takhle, ale protože nevím účel celé konstrukce,<br>tak by bylo třeba lepší zahrnout i porovnání s trijkou. Podmínku malého počtu písmenek zcela zjevně <br>nesplňuju, ale to zcela záměrně, protže bych se v tom rád vyznal i po několika letech kdy jsem to neviděl.<br><br><br>#define MIN_A_COUNT 2 // vyznam teto konstanty<br>#define REMAING_COUNT 12 // vyznam teto konstanty<br>#define MINIMAL_COND_COUNT 3 // vyznam teto konstanty<br> <br>static inline int count_test_conditions(int a, int b, int x, int y) <br>{<br> int count = 0;<br> if (a < MIN_A_COUNT) {++count;} // oduvodneni teto podminky<br> if (a > b) {++count;} // oduvodneni teto podminky<br> if (x < y) {++count;} // oduvodneni teto podminky<br> if ((a%x) == REMAING_COUNT) {++count;} // oduvodneni teto podminky<br> if (b < y) {++count;} // oduvodneni teto podminky<br> return count;<br>}<br><br>if (count_test_conditions(a, b, x, y) > 3) {<br>}<br><br><br>A bylo by docela zajímavé se podívat jak se liší zkompilovaný kód v obou případech.<br>Myslím že by tam velké rozdíly nebyly.<br><br><br></span><o:p></o:p></p><table class=MsoNormalTable border=0 cellpadding=0><tr><td width=2 style='width:1.5pt;background:blue;padding:.75pt .75pt .75pt .75pt'></td><td width=1025 style='width:768.75pt;padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal>Otázka tedy zní, jak ho upravit, aby prošel a přibylo co nejméně písmenek:-)<br> <br>PH<br> <br><b>Od: </b><a href="mailto:as5sgm@gmail.com">as5sgm@gmail.com</a><br><span style='font-size:10.0pt;font-family:"Courier New"'>>>> If ((a<2)+(a>b)+(x<y)+(a%x==12)+(b<y) > 3) {<br>Tento riadok kodu by nepresiel review a ani MISRA rules, vsade kde su aspon dvaja vyvojari :)<br>Miro<br> <br></span>On 21. 4. 2020 10:37, Pavel Hudecek wrote:<br>Vzhledem ke komutativnosti sčítání by pořadí mělo bejt irelevantní, kromě toho posledního >, ale to má nižší prioritu než +, takže se musí vyhodnotit jako poslední.<br> <br>No a že to nebude fungovat v jiných jazycích? To je snad normální. Nebo všechny mají ++, printf, pointery jako Delphi, nepotřebují deklarovat proměnné jako VB6, … ?<br> <br>Příkazů je tam 0, takže omezení na max. jeden na řádek to taky nepřekračuje.<br> <br>PH<br> <br><b>Od: </b><a href="mailto:a2x1nptda8@email.cz">Michal Gregor</a><br>Spravne se maji slozite podminky prevest do funkci. Plati zasada jeden <br>radek jeden prikaz. A nespolehat se na interni "tajne" funkce <br>compilatoru. Co kdyz to nekdo skopiruje do C++? Nebo do uplne jineho jazyja.<br> <br> <br>Dne 21.04.2020 v 8:46 Jan Waclawek napsal(a):<br>> A nemohlo to byt skor o tom, ze v takychto vyrazoch<br>> <br>>>> If ((a<2)+(a>b)+(x<y)+(a%x==12)+(b<y) > 3) {<br>> <br>> nie je zarucene poradie vyhodnotenia pod-vyrazov, aj keby mali vedlajsie<br>> efekty?<br>> <br>> wek<br>> <br>> <br>> ----- Original Message ---------------<br>>> Sa vam dvom do toho zamontujem, som nieco nasiel vo svojom archive, ale<br>>> Ty si mimo podozreni :)<br>>> Skor si ja pofajcim, ze uz kedy som daval do placu citat z normy, ktory<br>>> si teraz dal aj Ty :-D<br>>> <br>>> <a href="https://list.hw.cz/pipermail/hw-list/2011-July/399004.html">https://list.hw.cz/pipermail/hw-list/2011-July/399004.html</a><br>>> <br>>> miro<br>>> <br>>> On 21.4.2020 1:17, Jan Waclawek wrote:<br>>>> Hm, tak ja vidim vyhody skor v tych 6 ifoch a 1 pomocnej premennej...<br>>>> <br>>>> Ale ak by si nahodou nasiel odkaz, kde ten JW z minulosti povedal, ze<br>>>> vysledkom podmienky nemusi byt 0 alebo 1, tak by som Ti bol vdacny.<br>>>> <br>>>> wek<br>>>> <br>>>> <br>>>> ----- Original Message ---------------<br>>>> Tak?e se po pár misících mu?u vrátit k tomu, ?e jedna z výhod C je mo?nost<br>>>> dilat vici, jako:<br>>>> <br>>>> If ((a<2)+(a>b)+(x<y)+(a%x==12)+(b<y)> 3) {<br>>>> <br>>>> Co? v jiných jazycích vede na 6 ifu a 1 pomocnou prominnou.<br>>>> <br>>>> PH<br>>>> <br>>>> Od: Jan Waclawek<br>>>> <br>>>> Hm, tak potom by som mal asi tomu JW z minulosti jednu tresnut...<br>>>> <br>>>> Konkretne teda, C99, 6.5.8 Relational operators #6:<br>>>> Each of the operators< (less than),> (greater than),<= (less than or<br>>>> equal to), and>=<br>>>> (greater than or equal to) shall yield 1 if the specified relation is true<br>>>> and 0 if it is false. 92)<br>>>> The result has type int.<br>>>> <br>>>> Ten footnote 92) je kuzelny:<br>>>> The expression a<b<c is not interpreted as in ordinary mathematics. As the<br>>>> syntax indicates, it<br>>>> means (a<b)<c; in other words, ??if a is less than b, compare 1 to c;<br>>>> otherwise, compare 0 to c??.<br>>>> <br>>>> wek<br>>>> <br>>>> <br>>>> ----- Original Message ---------------<br>>>> <br>>>> Mil jsem nijak za to, ?e to byl právi jistý JW, kdo mi tu onehdá vyeetl, ?e<br>>>> spoléhat se, ?e výsledkem podmínky je 0 nebo 1 není správné:-)<br>>>> <br>>>> PH<br>>>> <br>>>> Od: Jan Waclawek<br>>>> <br>>>>> 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é).<br>>>> <br>>>> Preco by to nemal byt bit 0?<br>>>> <br>>>> _______________________________________________<br>>>> <br>>>>>> <br>>>>>> DDRB |=(1<CLK_UP); <br><span style='font-size:10.0pt;font-family:"Courier New"'> </span><o:p></o:p></p></td></tr></table><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>