Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: lug-bg: c/cpp incr/decr


  • Subject: Re: lug-bg: c/cpp incr/decr
  • From: Zhasmin Zhelev <z@xxxxxxxxxxx>
  • Date: Tue, 18 Jan 2005 11:26:11 +0200

George Danchev wrote:

On Tuesday 18 January 2005 09:24, Nikolay Mitev wrote:
Така това Хубаво, но след като всичко е синтактично правилно защо компила с -Wall не предупреждава за potential undefined behaviour след като го карам една и съща променлива да участва в израза хем преди инкремента и едновременно с това хем след инкремента без да имаме валиден край за statement (;) между тях (sequence poin) ? Това е извадка от по-сложна програма където нещата не са така явни и не е лесно да се track down-не, но се свежда до един такъв подводен камък. (операторите са други разбира се, щото инкремент + декремент няма много смисъл разбира се ;-)

Не искам да задълбавам много, но по-принцип, в горния пример според мисленето и смятането на компилатора (или поне както аз си го преставям) всичко е вярно. Изразите имат някакав приоритет на изпълнение и се преобразуват в обратен полски запис и се изчисляват спрямо него. И ето за конкретните примери:

1. a = x++ + ++x;

това се свежда до:

(++х) х=1
(х++) х=1 (тук не се извършва увеличаването)
събират се двете и се получава за "а" се получава 2, а след операцията "х" нараства с 1 и става 2

2. x = x++ + ++x;

аналогично на горния пример след операцията х = 2 но допълнитеното (х++) го прави 3.

Не е толкова сложно, но ужасно неразбрано и предпоставка за много грешки.

със Здраве.



============================================================================
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
============================================================================



 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.