OT:patecni okenko x = y+++++y;

Milan B. milan na bastl.sk
Pátek Říjen 4 18:53:08 CEST 2013


On 4. 10. 2013 18:31, Jan Waclawek wrote:
>>> To y + + + y zatial nerozumiem
> Uz rozumiem - prve + je normalne aditivne plus, ostatne su prefixove unarne
> +, ktore "neobracaju znamienko" (zdalo by sa, ze nerobia nic, ale ouha,
> vid v dalsom).

Ano, presne tak.

>> x=y+ + ++(+y);
> No ale to je tiez zle.

Ved hej, viz nizsie.

>
> On ten unarny prefixovy + totiz ma za nasledok, ze sa jednak vykonaju
> konverzie, a druhak sa podla 6.3.2.1#2 konverziou zmeni z lvalue na
> hodnotu (takpovediac rvalue). A kedze prefixovy (aj postfixovy) ++
> vyzaduje ako operator lvalue, musi to skoncit chybou, podobne, ako musi
> skoncit chybou trebars
> (+y) = 5;
> (Zatvorka nema vplyv na lvalue-ovitost, vid 6.5.1#5)
>
> Mimochodom, gcc 4.3.3 to prelozi, 4.7.1 uz nie, nemam nic medzi tym.

Mam 4.4.7, ten to prelozil.

> Zaujimave je, ze ani najstarsi gcc co mam neprelozil ++(-y) - co je
> syntakticky uplne totozne s tym ++(+y).

Mozno nie, vidim to tak, ze unarne plus sa vyoptimalizovalo tak, ako by 
tam vobec nebolo. Trochu sa zabudlo na to, ze vysledok takehoto vyrazu 
by uz nemal byt lvalue.

-m-

> wek
>
>



Další informace o konferenci Hw-list