|
Re: lug-bg: c/cpp incr/decr
- Subject: Re: lug-bg: c/cpp incr/decr
- From: Nikolay Mitev <nikolaymitev@xxxxxxx>
- Date: Tue, 18 Jan 2005 12:04:12 +0200
Vasil Kolev wrote:
On вт, 2005-01-18 at 00:11 +0200, George Danchev wrote:
бърз въпрос: Разликата между x++ и ++x е безкрайно ясна (т.е. определя дали
променливата ще участва инкрементирана в израза, като тя самата при всички
случаи се инкрементира), но защо когато участва и в лявата страна на израза
(втория случай) се получава един инкремент повече...
....
Нали знаеш вица "Докторе, като правя така, ме боли" "Ами не прави
така" :) ...Смесването на префиксния и постфиксния оператор в/у една и
съща променлива в един израз не е ясно какво дава, както например не е
ясно какво прави
a+++b (т.е. дали е (a++) +b или a+(++b) ).
Не е така. По стандарт копилаторът е длъжен да парсне най-дългия токен,
дори това да води до синтактична грешка. Т.е. а+++b задължително трябва
да се парсне като (а++) +b.
Примерно в c++ стандарта е даден примера (2.4.5)
a+++++b се парсва като а++ ++ +b, и дава синтактична грешка, въпреки че
ако се парсне като
а++ + ++b няма да има грешка.
cheers,
face
============================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers).
http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora
To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
============================================================================
|
|
|