Re: lug-bg: c/cpp incr/decr
- Subject: Re: lug-bg: c/cpp incr/decr
- From: Vasil Kolev <vasil@xxxxxxxxxx>
- Date: Tue, 18 Jan 2005 12:38:06 +0200
- Organization: Ludost Networks
On вт, 2005-01-18 at 12:04 +0200, Nikolay Mitev wrote:
> Vasil Kolev wrote:
> >Нали знаеш вица "Докторе, като правя така, ме боли" "Ами не прави
> >така" :) ...Смесването на префиксния и постфиксния оператор в/у една и
> >съща променлива в един израз не е ясно какво дава, както например не е
> >ясно какво прави
> >a+++b (т.е. дали е (a++) +b или a+(++b) ).
> >
> >
> Не е така. По стандарт копилаторът е длъжен да парсне най-дългия токен,
> дори това да води до синтактична грешка. Т.е. а+++b задължително трябва
> да се парсне като (а++) +b.
> Примерно в c++ стандарта е даден примера (2.4.5)
> a+++++b се парсва като а++ ++ +b, и дава синтактична грешка, въпреки че
> ако се парсне като
> а++ + ++b няма да има грешка.
>
В C++ може, но в C е недефинирано като поведение, като бях първи курс и
си нямахме друга работа, експериментирахме с няколко компилатора и
няколко архитектури, това даваше различни резултати.
Attachment:
signature.asc
Description: This is a digitally signed message part
|