OT:patecni okenko x = y+++++y;
Jan Waclawek
konfera na efton.sk
Pátek Říjen 4 18:31:16 CEST 2013
>> 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).
>x=y+ + ++(+y);
No ale to je tiez zle.
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.
Zaujimave je, ze ani najstarsi gcc co mam neprelozil ++(-y) - co je
syntakticky uplne totozne s tym ++(+y).
wek
----- Original Message ---------------
Subject: Re: OT:patecni okenko x = y+++++y;
From: "Milan B." <milan at bastl.sk>
Date: Fri, 04 Oct 2013 17:42:44 +0200
To: hw-list at list.hw.cz
>
>[xxxx at xxxx ~]# rm -f a.out ; grep "++" q.c ; gcc q.c ; ./a.out
>x=y+ + ++(+y);
>4 2
>
>he he
>
>-m-
>
>On 4. 10. 2013 17:06, Jan Waclawek wrote:
>> To y + + + y zatial nerozumiem, musim si to pozriet; ale s tym +++++ som si
>> to pamatal, to je priamo v norme - C99, 6.4#6 EXAMPLE2 The program
>> fragment x+++++y is parsed as x ++ ++ + y, which violates a constraint on
>> increment operators, even though the parse x ++ + ++ y might yield a
>> correct expression.
>>
>> Parser sa totiz podla 6.4#4 ma snazit najst najdlhsiu sekvenciu znakov,
>> ktore sa daju vyhodnotit ako "nieco zmysluplne".
>>
>> Kvoli tomu je aj ten +++y vadny, ma sa to tiez parsovat ako ++ + y.
>>
>> wek
>>
Další informace o konferenci Hw-list