OT Ceckarsky kviz

Miroslav Šinko sinkomiro@gmail.com
Čtvrtek Březen 5 14:16:34 CET 2009


Tak mate pravdu, norma to nedefinuje okrem zvlastnych pripadov:

The grouping of operators and operands is indicated by the syntax.
Except as specified
later (for the function-call (), &&, ||, ?:, and comma operators), the
order of evaluation
of subexpressions and the order in which side effects take place are
both unspecified.

No v MSVC, aj kolega v GCC sme mali iba stastie na implementaciu.
Takze Jano urobi najlepsie, ked si to rozpise do viacerych riadkov a
doplni explicitne pretypovanie.

miro

2009/3/5 Josef Stengl <ok1ced@nagano.cz>:
> Mely by se, nebo se vyhodnocuji? Ja mam zafixovano, ze na toto ze neda v
> C spolehnout, tak musim vrazet zavorky (nebo jine postupy), abych to
> zajistil. Jste si jist ze norma C urcuje poradi vyhodnocovani vyrazu
> striktne z leva do prava? To ze to dela kompilator je jina vec, na to
> nelze obecne spolehat.
> ced
>
>
>
> Miroslav Šinko wrote:
>> No ja to skusim, ale z pohladu bitoveho OR maju vyrazy vlavo a vpravo
>> roznaku vahu napriek zatvorke, t.j. mali by sa vyhodnocovat zlava.
>>
>> miro
>>
>> 2009/3/5 Pavel Troller <patrol@sinus.cz>:
>>
>>> Zdravim,
>>>  nu, ja si nejsem zcela jist, zda to tak je zcela dobre :-). Protoze
>>> parser aritmetiky napred vyhodnoti vyraz v zavorce, takze zavola
>>> GetByte(), ktere precte LSB, a dalsi GetByte() se zavola az potom a
>>> to precte MSB. Tim padem budou bajty v cisle prohozeny...
>>>  Pro ucely citelnosti a jistoty provedeni bych radeji volil trosku
>>> komplikovanejsi zapis
>>>
>>>  uint8_t lo, hi;
>>>  uint16_t a;
>>>  ...
>>>  lo = GetByte(); hi = GetByte();
>>>  a = hi << 8 | lo;
>>>
>>>  S pozdravem Pavel Troller
>>>



Další informace o konferenci Hw-list