Zmienne i stałe są podstawowymi obiektami danych, jakimi posługuje się program. Deklaracje wprowadzają potrzebne zmienne oraz ustalają ich typy i ewentualnie ich wartości początkowe. Operatory określają, co należy z tymi obiektami zrobić. Wyrażenia wiążą zmienne i stałe, tworząc nowe wartości. Typ obiektu determinuje zbiór jego wartości i operacje, jakie można na nim wykonać. Oto zagadnienia zawarte w tym rozdziale.
W standardzie ANSI C wprowadzono wiele małych zmian i dodatków do opisu podstawowych typów i wyrażeń. Wszystkie typy całkowite mogą teraz wystąpić w postaci liczby ze znakiem (signed) i bez znaku (unsigned). Wprowadzono notację dla stałych bez znaku oraz dla szesnastkowych stałych znakowych. Można dokonywać operacji zmiennopozycyjnych w pojedynczej precyzji. Wprowadzono także typ long double dla obliczeń w rozszerzonej precyzji. Stałe napisowe można sklejać na etapie kompilacji. Wreszcie po latach formalnie uznane wyliczenia stały się częścią języka Obiekty można deklarować jako const (stałe), co maje chronić przed zmianą wartości. Zasady automatycznych wymuszeń wśród typów arytmetycznych rozszerzono tak. aby obowiązywały dla bogatszego zbioru typów. I
Chociaż nie mówiliśmy o tym w rozdz.l, to jednak w języku C występuje kilka ogra-niczeri dotyczących nazw zmiennych i stałych symbolicznych. Nazwy tworzy się z liter i cyfr; pierwszym znakiem nazwy musi być litera. Znak podkreślenia jest traktowany jak litera - czasami przydaje się do poprawienia czytelności długich nazf Nie rozpoczynaj jednak nazw zmiennych od znaku podkreślenia, gdyż takie nazw) często występują w podprogramach bibliotecznych. W języku C rozróżnia się wielki* i małe litery alfabetu, toteż x oraz X są dwiema różnymi nazwami. Tradycyjnie w programach w języku C nazwy zmiennych pisze się małymi, a nazwy stałych symbolicz nych wielkimi literami.
Co najmniej 31 początkowych znaków nazwy wewnętrznej ma funkcji i nazwy zmiennych zewnętrznych mogą być ograniczone do mniej niż 31 znaków, ponieważ posługują się nimi asemblery i programy ładujące, a na ich działanie język nie ma wpływu. W standardzie przyjęto, że w nazwach zewnętrznych gwarantuje się unikalność tylko 6 początkowych znaków, przy czym nie rozróżnia się wielkich i małych liter alfabetu. Słowa kluczowe, takie jak if, else, int, float itd., są zarezerwowane - nie możesz ich używać jako nazw zmiennych. Wszystkie słowa kluczowe muszą być pisane małymi literami.
Roztropniej jest nadawać zmiennym nazwy, których znaczenie wiąże się z ich zastosowaniem oraz które są na tyle różne, by nie myliły się w druku. My mamy skłonność do nadawania krótkich nazw zmiennym lokalnym (zwłaszcza tym, które sterują wykonaniem pętli) oraz do stosowania długich nazw dla zmiennych zewnętrznych.
W języku C występuje tylko kilka podstawowych typów danych:
char jeden bajt, zdolny pomieścić jeden znak z lokalnego zbioru znaków; int typ całkowity, zwykle odzwierciedlający naturalny rozmiar liczb całkowitych komputera;
float typ zmiennopozycyjny pojedynczej precyzji;
double typ zmiennopozycyjny podwójnej precyzji.
Dodatkowo występuje kilka kwalifikatorów stosowanych razem z tymi podstawowymi typami danych. Kwalifikatory short (krótki) oraz long (długi) odnoszą się do obiektów całkowitych:
short int sh; long int counter;
W takich deklaracjach słowo int może być - i zwykle jest - pominięte.
Typy short i long wprowadzono po to, aby umożliwić posługiwanie się różnymi zakresami liczb całkowitych tam, gdzie to się może przydać. Typ int na ogół odzwierciedla naturalny rozmiar wynikający z architektury danej maszyny. Obiekt typu short często zajmuje 16 bitów, obiekt typu long - 32 bity, a obiekt typu int zarówno 16 bitów, jak i 32 bity. Każdy kompilator może dowolnie wybierać rozmiary odpowiednie dla sprzętu, na jakim działa, pod warunkiem jednak, że stosuje następujące ograniczenia: obiekty typu short i int są co najmniej 16-bitowe, obiekty typu long - co najmniej 32-bitowe, a obiekt short nie może być dłuższy niż int, który z kolei nie może być dłuższy niż long.
61