c - zápis řádku

Jan Waclawek konfera na efton.sk
Neděle Srpen 4 22:42:30 CEST 2013


C99, 6.5.17.

The left operand of a comma operator is evaluated as a void expression; there is a
sequence point after its evaluation. Then the right operand is evaluated; the result has its
type and value.

Priamo v norme je k tomu nasledujuci priklad:

In the function call
f(a, (t=3, t+2), c)
the function has three arguments, the second of which has the value 5.

Je to taky nie prilis systematicky prvok v C, sluziaci viacmenej len na zmatenie nepriatela, ani mi nie je jasne, preco sa tam vobec ocitol.

Vo Vasom pripade ta vnutorna zatvorka predstavuje parameter funkcie, ktorym su vlastne dva comma operatory ktore sa vykonaju jeden po druhom, najprv ten lavy (asociativita je zlava doprava (to je dane tym BNF-like zapisom na zaciatku 6.5.17, ja som ho neodcitoval cely)), ale kedze nemaju vedlajsie efekty (nie je tam nic volatile), tak sa vlastne vyrazy okrem toho co je najviac vpravo neemusia vobec vyhodnotit, a cele to teda prelozilo ako asin(63838251249595768783149486794909), ak je ten prekladac dostatocne chytry, tak to je konstantny vyraz, takze ho mohol prelozit ako priradenie prislusnej konstanty do vyslednej premennej. Neviem, ako ste to rozhodili do dvoch riadkov, ale zrejme tam bola vysledkom ina postupnost operacii (aj ked tiez bol vysledok urcite nespravny).

Malo Vas trknut to chybove hlasenie v preklade s jednou zatvorkou :-) . Ako som pisal, niekedy je uzitocne si vediet urobit cisty preprocesing bez kompilacie.

wek


On Sun, 4 Aug 2013 22:20:28 +0200
Jan Waclawek <konfera at efton.sk> wrote:

> Lebo ciarka je v C operator.
> 
> wek
> 
> On Sun, 4 Aug 2013 22:06:17 +0200
> "Miroslav Draxal" <evik at volny.cz> wrote:
> 
> > No jo no, člověk do toho čumí a přesto nevidí. Samozřejmě, že je to tak. Jenom by mě zajímalo, jakto že to přeložilo ten řádek s těma ,
> > 
> > 
> > SlunecniVyskaNadObzoremDb = asin ((sin (SlunecniDeklinaceDb) * 0, 76971927852909363552858997231136 + cos (SlunecniDeklinaceDb) * cos (SlunecniCasovyUhelDb) * 0, 63838251249595768783149486794909));
> > 
> > Když na to koukám, nějak mi nedochází, jak to mohlo přeložit?
> > 


Další informace o konferenci Hw-list