Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Deklaracje stałych

Ostatnio zmodyfikowano 2015-06-06 14:47
Autor Wiadomość
kmlkamilek
Temat założony przez niniejszego użytkownika
Deklaracje stałych
» 2015-06-04 23:26:52
Gdzieś wyczytałem, że stałe w c++, można definiować na dwa sposoby:
- Za pomocą słowa kluczowego
const

- Za pomocą dyrektywy
#define

Ciekawi mnie co różni te dwa sposoby.
P-133196
pekfos
» 2015-06-05 01:57:25
Więc doczytaj.
P-133199
kmlkamilek
Temat założony przez niniejszego użytkownika
» 2015-06-05 02:53:56
Tam nie było to opisane, bo to było coś w rodzaju kursu c++ dla początkujących, więc opis skupiał się tylko na deklaracji za pomocą const. Inaczej nie tworzył bym tu tematu.
P-133200
BadBullPL
» 2015-06-05 05:24:04
Ja w symfoni c++ wyczytałem że nie zaleca się definiować stałych za pomocą
#define
 gdyż to był standard c a poza tym stosując
const
 kompilator ma większe szanse na wykrycie pomyłek
P-133201
pekfos
» 2015-06-05 11:10:11
nie zaleca się definiować stałych za pomocą
#define
Bo nie należy. Zbyt prymitywny i niebezpieczny mechanizm, gdy niepoprawnie stosowany. Stałe const mają sprawdzanie typów, adresy i w ogóle są bardziej idiotoodporne, niż makra.
C/C++
#define TRZY 1 + 2
#define PIEC 2 + 3
const int Trzy = 1 + 2;
const int Piec = 2 + 3;

cout << TRZY << " * " << PIEC << " = " << TRZY * PIEC << endl;
cout << Trzy << " * " << Piec << " = " << Trzy * Piec << endl;
3 * 5 = 8
3 * 5 = 15
P-133206
kmlkamilek
Temat założony przez niniejszego użytkownika
» 2015-06-05 14:08:02
Czyli tworząc sobie stałą:
C/C++
#define TRZY 1+1+1

Tworzymy tak naprawdę makro i wszystkie wyrazy "TRZY" będą zastąpione wyrażeniem 1+1+1 w chwili kompilacji, a deklarując stała za pomocą
const
, spowoduje, że stała będzie tworzona w trakcie działania programu oraz zostanie gdzieś umiejscowiona w pamięci operacyjnej. Dobrze zrozumiałem? :>
P-133215
Piastlis
» 2015-06-05 20:18:42
Zamiana jest typu tekst-tekst.Trzy to 1+1+1.Ale Trzy*Trzy to 1+1+1*1+1+1 czyli 5. 
P-133226
kmlkamilek
Temat założony przez niniejszego użytkownika
» 2015-06-06 14:47:44
To raczej normalne, że c++ weźmie pod uwagę kolejność wykonywania działań. ;)
Chyba już wszystko zrozumiałem. Temat zamykam. Dziękuje wszystkim osobom, które tu pisały.
P-133257
« 1 »
  Strona 1 z 1