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

 

начало

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

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

семинари ...

документи

как да ...

 

 

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

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 09:24:51 +0200

Здрасти

George Danchev wrote:

бърз въпрос: Разликата между x++ и ++x е безкрайно ясна (т.е. определя дали променливата ще участва инкрементирана в израза, като тя самата при всички случаи се инкрементира), но защо когато участва и в лявата страна на израза (втория случай) се получава един инкремент повече...

#include <iostream>
using namespace std;

int main()
{
  int a, b, x, y ;

//
  a = b = x = y = 0 ;

  a = x++ + ++x;
  b = ++y + y++;

  cout << "a = x++ + ++x = " << a << "\n";
  cout << "b = ++y + y++ = " << b << "\n";

//
  a = b = x = y = 0 ;

  x = x++ + ++x;
  y = ++y + y++;

  cout << "x = x++ + ++x = " << x << "\n";
  cout << "y = ++y + y++ = " << y << "\n";

//
  a = b = x = y = 0 ;

  cout << "x++ + ++x = x++ + ++x " << x++ + ++x << "\n";
  cout << "++y + y++ = ++y + y++ " << ++y + y++ << "\n";

  return 0;
}

./test
a = x++ + ++x = 2
b = ++y + y++ = 2
x = x++ + ++x = 3
y = ++y + y++ = 3
x++ + ++x = x++ + ++x 2
++y + y++ = ++y + y++ 2

10x
На това му се вика undefined behaviour. Компилатора има право да ти даде какъвто резултат му скимне. По стандарт нямаш право да променяш една и съща променлива без "sequence point" м/у двете промени, а ти правиш точно това в горните примери.


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



 

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

 

линукс за българи
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.