36 ROZDZIAŁ 7. ZMIENNE Dobrze jest używać stałych w programie, ponieważ unikniemy wtedy przypadko- wych pomyłek a kompilator może często zoptymalizować ich użycie (np. od razu pod- stawiając ich wartość do kodu). const int WARTOSC_POCZATKOWA=5; int i=WARTOSC_POCZATKOWA; WARTOSC_POCZATKOWA=4; /* tu kompilator zaprotestuje */ int j=WARTOSC_POCZATKOWA; Przykład pokazuje dobry zwyczaj programistyczny, jakim jest zastępowanie umiesz- czonych na stałe w kodzie liczb stałymi. W ten sposób będziemy mieli większą kontrolę nad kodem — stałe umieszczone w jednym miejscu można łatwo modyfikować, zamiast szukać po całym kodzie liczb, które chcemy zmienić. Nie mamy jednak pełnej gwarancji, że stała będzie miała tę samą wartość przez cały czas wykonania programu. Możliwe jest dostanie się do wartości stałej pośrednio — za pomocą wskaźników. Można zatem dojÅÄ do wniosku, że sÅowo kluczowe const sÅuży tylko do poinformowania kompilatora, aby ten nie zezwalaÅ na jawnÄ
zmianÄ wartoÅci staÅej. Z drugiej strony, zgodnie ze standardem, próba modyï¬kacji wartoÅci staÅej ma niezdeï¬niowane dziaÅanie (tzw. undeï¬ned behaviour ) i w zwiÄ
zku z tym może siÄ powieÅÄ lub nie, ale może też spowodowaÄ jakieÅ subtelne zmiany, które w efekcie spowodujÄ
, że program bÄdzie źle dziaÅaÅ. Podobnie do zdeï¬niowania staÅej możemy użyÄ dyrektywy preprocesora #deï¬ne (opisanej w dalszej czÄÅci podrÄcznika). Tak zdeï¬niowanÄ
staÅÄ
nazywamy staÅÄ
sym- bolicznÄ
. W przeciwieÅstwie do staÅej zadeklarowanej z użyciem sÅowa const staÅa zdeï¬niowana przy użyciu #deï¬ne jest zastÄpowana danÄ
wartoÅciÄ
w każdym miejscu, gdzie wystÄpuje, dlatego też może byÄ używana w miejscach, gdzie ânormalnaâ staÅa nie mogÅaby dobrze speÅniÄ swej roli. W przeciwieÅstwie do jÄzyka C++, w C staÅa to caÅy czas zmienna, której kompila- tor pilnuje, by nie zmieniÅa siÄ. Z tego powodu w C nie można użyÄ staÅej do okreÅlenia wielkoÅci tablicy1 i należy siÄ w takim wypadku odwoÅaÄ do wczeÅniej wspomnianej dyrektywy #define. Typy zmiennych Każdy program w C operuje na zmiennych â wydzielonych w pamiÄci komputera obszarach, które mogÄ
reprezentowaÄ obiekty nam znane, takie jak liczby, znaki, czy też bardziej zÅożone obiekty. Jednak dla komputera każdy obszar w pamiÄci jest taki sam â to ciÄ
g zer i jedynek, w takiej postaci zupeÅnie nieprzydatny dla programisty
(…)
… danych? W takim wypadku stosujemy konwersję
1 Jest
to możliwe w standardzie C99
…
... zobacz całą notatkę
Komentarze użytkowników (0)