Historia języka C Typy danych
Typowe typy danych
1969 język BCPL; Martin Richards z University Mathematical
Laboratories w Cambridge; dla pierwszej instalacji sys-
Typ danych Opis Typowe wymagania
temu operacyjnego UNIX
pamięciowe
int wielkość całkowita 2 bajty albo 1
1970 język B zdefiniowany dwa lata wcześniej przez Kena
słowo (zmienia się
Thompsona dla pierwszego systemu UNIX działającego
zależnie od
na DEC PDP-7.
kompilatora)
1972 definicja języka C przez Dennisa M. Ritchie z Bell Labo-
char pojedyńczy znak 1 bajt
ratories w New Jersey dla systemu UNIX działającego na
minikomputerze DEC PDP-11.
float liczba zmienno- 1 słowo (4 bajty)
przecinkowa
Cele:
double liczba zmiennoprzecin- 2 words (8 bytes),
" połączenie cech języka wysokiego poziomu zapewniając ła- kowa podwójnej precyzji
twość projektowania algorytmów, a zarazem dostatecznie (tzn. najbardziej zna-
niskiego, aby algorytmy te były optymalne. czące cyfry i wykładnik,
które mogą mieć większy
rozmiar)
" uniezależnienie takiego języka od konkretnej maszyny i
systemu operacyjnego, przy uwzględnieniu jednocześnie
właściwości jak największej liczby maszyn.
Stałe
Zestaw znaków języka C
Przykład Nazwa
C używa liter dużych A do Z, liter małych a do z, cyfr 0 do
1234 int
9 i pewnych znaków specjalnych do budowy swoich podstawo-
2345l long int
wych elementów programu takich, jak stałe, zmienne, operatory
2345L long int
i wyrażenia.
1234u unsigned int
Lista znaków specjalnych
2345U unsigned int
5678ul unsigned long int
! * + \ " <
12.34 double
* ( = | { >
1e-2 double
% ) ~ ; } /
1.2e-2 double
^ - [ : , ?
2.3f float
& _ ] . (blank)
2.3F float
3.4e-2l long double
Ciągi specjalne budowane jako kombinacje, np. \b \n \t
3.4e-3L long double
iotd.
Różne systemy liczbowe
Identyfikatory i słowa kluczowe
Identyfikatorami są nazwy nadawane różnym elementom pro- System liczbowy
gramu takim, jak zmienne, funkcje i tablice.
dziesiętny ósemkowy szesnastkowy
Identyfikatory składają się z liter, cyfr oraz ewentualnie znaku
31 037 0x1f
podkreślenia (_) (traktowanego jak litera) występujących w do-
31 037 0X1F
wolnym porządku, z jednym ograniczeniem, że pierwszym zna-
kiem musi być litera. Stałe znakowe
Przykłady prawidłowych identyfikatorów:
Stała znakowa jest pojedyńczym znakiem zamkniętym po-
między apostrofami.
x y12 sum_1 _temp
A a 3 $
names area tax_rate TABLE
Zestaw znaków ASCII (American Standard Code for Information
Słowa kluczowe pewne zarezerwowane wyrazy, które mają
Interchange)
predefiniowane znaczenie w C.
Standardowe słowa kluczowe:
Stała Wartość
A 65
auto extern sizeof
x 120
break float static
3 51
case for struct
$ 36
char goto switch
32
const if typedef
continue int union
default long unsigned
Znaki specjalne
do register void
double return volatile
Znak Symbol Wartość ASCII
else short while
enum signed
bell(alarm) \a 007
cofnięcie \b 008
Pewne kompilatory rozpoznają wszystkie albo część następu- poziomy tabulator \t 009
jących słów kluczowych:
pionowy tabulator \v 011
nowa linia (line feed) \n 010
ada far near nowa strona (form feed)\f 012
asm fortran pascal powrót karetki \r 013
entry huge cudzysłów \" 034
apostrof \ 039 char esc= \\ ; /* znak \ */
znak zapytania \? 063 int i=0; /* licznik iteracji */
backslash \\ 092 int limit=MAXLINE+1; /* maks. liczby iteracji */
null \0 000 float eps=1.0e-5; /* parametr dokładności */
liczba ósemkowa \ooo
liczba szesnastkowa \xoo
Domyślne wartości początkowe zmiennych:
statyczne i zewnętrzne -- 0
Wyrażenie stałe wyrażenie zawierające tylko stałe
automatyczne -- gdy wartości początkowe są
określone ta sama wartość
#define MAXL 10000
przy każdym wywołaniu funk-
#define VTAB \013
cji albo wejściu do bloku.
#define VTAB \x7
Bez określenia wartości po-
#define VTAB \X7
czątkowych przyjmują one
#define VTAB \v
wartości losowe.
Stałe napisowe ciągi znaków zamknięte pomiędzy zna-
Kwalifikator const (constant) (może być użyty do zadeklaro-
kami cudzysłowu
wania dowolnej zmiennej) Mówi, że wartość zmiennej nie będzie
zmieniona.
"To jest napis!"
albo
const double e=2.1234e-2;
"" /* napis pusty*/
const char msg[]="Uwaga";
int strlen(const char []);
/* zawartość tablicy -- argument nie może
Technicznie napis jest tablicą o liczbie elementów większej o
być zmieniony wewnątrz funkcji */
jeden od liczby znaków, które zawiera napis. Po znakach wystę-
puje znak NULL (\0).
Stała x jest różna od "x".
Każda próba zmiany wartości zmiennej zadeklarowanej jako
constant kończy się w sposób zależny od implementacji.
Stałe napisowe mogą być połączone razem w trakcie kompi-
lacji programu:
char text[]="Kalifornia";
"Hej!" "Przygodo!"
jest identyczne z:
"Hej!Przygodo!"
Tablica 11 - elementowa.
Stałe wyliczeniowe
char text[11]="Kalifornia";
(Lista wartości stałych całkowitoliczbowych).
enum boolean {NO,YES};
Rozmiar powinien być wyspecyfikowany właściwie.
enum escapes {BELL= \a , BACKSPACE= \b , TAB= \t ,
NEWLINE= \n , VTAB= \v , RETURN= \r };
char text[6]="Kalifornia"; /* Stracimy koniec */
enum months {JAN=1, FEB, MAR, APR, MAY, JUN, JUL,
char text[20]="Kalifornia"; /* dodatkowe elementy
AUG, SEP, OCT, NOV, DEC};
mogą być wyzerowane, albo mogą zostać
/* months: february is second, march third
wypełnione znakami bez znaczenia */
and so on */
Nazwy w różnych wyliczeniach muszą być różne. Wartości w
Wyrażenia
tym samym wyliczeniu mogą się powtarzać.
Nazwa typu enum należy do tej samej przestrzeni co nazwy
Wyrażenie reprezentuje pojedyńczą jednostkę danych, tak
typów struktur i unii.
samo jak liczba albo znak. Wyrażenie może składać się z po-
Nazwy zmiennych wylioczeniowych należą do tej samej klasy,
jedyńczej wielkości takiej jak stała, zmienna, element tablicy
co identyfikatory zwykłych zmiennych.
albo odniesienie do funkcji. Może równiez składać się z pew-
nych kombinacji takich elementów połączonych wzajemnie przez
Deklaracje
jeden albo więcej operatorów.
Wyrażenie może równiez reprezenrtiować warunek logiczny
(w C prawda jest reprezentowana przez liczbę całkowitą 1 a fałsz
int lower,upper, step; przez 0).
char c,lin[1000];
Instrukcje
Instrukcja poleca komputerowi wykonać pewną czynność. W
C występują trzy różne klasy instrukcji: instrukcje wyrażenia,
instrukcje blokowe i instrukcje sterujące.
int lower;
Instrukcje wyrażenia wyrażenia kończone znakiem śred-
int upper;
nika (;).
int step;
char c;
char lin[1000];
a=3;
c=a+b;
++i;
Wartości początkowe mogą być przypisane zmiennym we- printf("Obszar = %f", area);
wnątrz deklaracji typu:
Instrukcja blokowa grupa instrukcji pojedyńczych otoczo-
nych parą nawiasów klamrowych ({ and })
{
pi=3.141593;
circum=2. * pi * radius;
area = pi * radius * radius;
}
Instrukcje sterujące
while (count <= n) {
printf("x= ");
scanf("%f",&x);
sum += x;
++count;
}
Wyszukiwarka
Podobne podstrony:
BD 2st 1 2 w01 tresc 1 1W01 NIDUC Zamojskiw01W01 Matlab1w01 demo problemy spoleczne i wspolpracaW01 Fizyka HaranLP mgr W01 Podst pojeciaAire W01MB W01 PWrMES JCh MM WW OKnO w01 podstawowe pojeciaInstrukcja GECO Z 502 P01 S v01 w01 POLinf2 w010708z sieciTM w01zs1 1mar w01Instrukcja GECO Z 530 1 S v04 w01 POLwięcej podobnych podstron