Deklaracje stałych
Ostatnio zmodyfikowano 2015-06-06 14:47
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. |
|
pekfos |
» 2015-06-05 01:57:25 Więc doczytaj. |
|
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. |
|
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 |
|
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. #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 |
|
kmlkamilek Temat założony przez niniejszego użytkownika |
» 2015-06-05 14:08:02 Czyli tworząc sobie stałą: 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? :> |
|
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. |
|
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. |
|
« 1 » |