W02.PDF
(
58 KB
)
Pobierz
w2.dvi
Staªe
"Hej!" "Przygodo!"
jest identyczne z:
"Hej!Przygodo!"
Przykªad
Nazwa
1234
int
2345l
long int
Staªa wyliczeniowa (enumeration constant)
(Lista warto±ci staªych caªkowitych)
2345L
long int
1234u
unsigned int
2345U
unsigned int
5678ul
unsigned long int
enum boolean {NO,YES};
enum escapes {BELL='\a', BACKSPACE='\b', TAB='\t',
NEWLINE='\n', VTAB='\v', RETURN='\r'};
12.34
double
1e-2
double
1.2e-2
double
2.3f
float
enum months {STY=1, LUT, MAR, KWI, MAJ, CZE, LIP,
SIE, WRZ, PAZ, LIS, GRU};
/* miesiace: luty jest drugi, marzec trzeci itd. */
2.3F
float
3.4e-2l
long double
3.4e-3L
long double
Zapis warto±ci staªych caªkowitych w ró»nych kodach
Nazwy w ró»nych wyliczeniach musza by¢ ró»ne. W tym
samym wyliczeniu warto±ci mogasiepowtarza¢.
Nazwa typu enum dzieli tasama przestrze«, co nazwy typów
struktur i unii.
Nazwy zmiennych wyliczeniowych nale»a do tej samej klasy,
co identykatory zwykªych zmiennych.
Rodzaj kodu
dziesietny ósemkowy szesnastkowy
31
037
0x1f
31
037
0X1F
Staªa znakowa
{'a'
'0'
versus
48
Bitowy wzorzec bajtu
Deklaracje
'\ooo' -- ooo oznacza jedna, dwie
lub trzy liczby osemkowe
albo
'\xhh' -- hh oznacza jedna lub wiecej
cyfr szesnastkowych
int lower,upper, step;
char c,lin[1000];
Lista sekwencji specjalnych jezyka C
\a znak alarmu
\b znak cofania
\f znak nowej strony
\n znak nowego wiersza
\r znak powrotu karetki
\t znak tabulacji poziomej
\v znak tabulacji pionowej
\\ znak \
\? znak zapytania
\' znak apostrofu
\" znak cudzyslowu
\ooo liczba osemkowa
\xhh liczba szesnastkowa
int lower;
int upper;
int step;
char c;
char lin[1000];
W deklaracjach mo»na nada¢ warto±ci poczatkowe:
char esc='\\'; /* znak \ */
int i=0; /* licznik iteracji */
int limit=MAXLINE+1; /* maksymalna liczba iteracji */
float eps=1.0e-5; /* parametr dok\l adno\' sci */
Wyra»enie staªe - wyra»enie, w którym wystepuja
wyªacznie staªe.
Warto±ci poczatkowe domy± lne zmiennych:
#define MAXL 10000
#define VTAB '\013'
#define VTAB '\x7'
#define VTAB '\X7'
#define VTAB '\v'
statycznych i zewn\c etrznych -- 0
automatycznych -- przy jawnie okreslonych wartosciach
poczatkowych ta sama wartosc
przy kazdym wywolaniu funkcji badz
wejsciu do bloku.
bez jawnie okreslonej wartosci
poczatkowej maja wartosci
przypadkowe.
Staªa napisowa -ciag zªo»ony z zera lub wiekszej liczby
znaków umieszczonych pomiedzy znakami cudzysªowu, np.
"To jest napis!"
lub
"" /* napis pusty */
Kwalikator const (staªy) (mo»na u»y¢ do deklaracji dowolnej
zmiennej); Mówi, »e jej warto±¢ nie bedzie zmieniana.
Technicznie napis jest tablica o liczbie elementów o jeden wieksza
ni» liczba znaków. Dochodzi znak ko«ca znaku '
0'.
const double e=2.1234e-2;
const char msg[]="Uwaga";
int strlen(const char []); /* zawartosc tablicy
- argumentu nie moze byc zmieniona
wewnatrz funkcji */
Staªa'x'jestró»naod"x".
Napisy moga by¢ sklejane podczas kompilacji programu:
Próba zmiany warto±ci zmiennej zadeklaqrowanej jako const
ko«czy sie w sposób zale»ne od implementacji.
\* lower: zamie\' n c na ma\l\c a liter\c e;
tylko dla ASCII */
int lower(int c)
{
Operatory arytmetyczne
+ dodawanie
if (c >= 'A' && c <= 'Z')
return c+'a'-'A';
else
return c;
-
odejmowanie
}
mno»enie
/ dzielenie
Niejawne przeksztaªcenia arytmetyczne dziaªaja zgodnie z
oczekiwaniami. Ogólnie, je±li argumenty operatora dwuargu-
mentowego (np. + czy *) sa ró»nego typu, to typ "mniejszy"
jest promowany do typu "wiekszego" przed wykonaniem opera-
cji. Typem wyniku jest typ "wiekszy".
Nieformalny zestaw reguª przedstawia sienastepujaco:
% dzielenie modulo
Operatora % nie mo»na stosowa¢ do zmiennych typu float i
double.
Dla ujemnych argumentów operacji zarówno kierunek za-
okraglenia wyniku po obcieciu cze±ci uªamkowej przez dzielenie
caªkowite, jak i znak liczby, która jest wynikiem dzielenia modulo
%, sa zale»ne od maszyny. Akcje podejmowane po wystapieniu
nadmiaru lub niedomiaru tak»e zale»aodmaszyny.
Dwuargumentowe operatory + i - maja ten sam priorytet.
Jest on ni»szy od priorytetu operatorów *,/ oraz %, który z kolei
jest ni»szy od priorytetu operatorów jednoargumentowych + i -.
Operatory arytmetyczne sa lewostronnie ªaczne.
Je±li którykolwiek z argumentów jest typu long double, to
ten drugi zostanie przeksztaªcony do long double.
W przeciwnym przypadku, je±li typem któregokolwiek ar-
gumentu jest double, to ten drugi zostanie przeksztaªcony
do double.
W przeciwnym przypadku, je±li typem jednego z argumen-
tów jest float, to drugi argument zostanie przeksztaªcony
do typu float.
Relacje i operatory logiczne
Operatory relacji:
W przeciwnym przypadku, wszystkie obiekty char i short
saprzeksztaªcanedotypuint.
>, >=, < <=
\end{verbatim
nastepnie, je»eli którykolwiek z argumentów ma kwalika-
tor long, to to drugi zostanie przksztaªcony do long.
Operatory por\' ownania:
Reguªy przeksztaªce« sa znacznie bardziej skomplikowane dla
argumentów unsigned.
Ka»dy argument funkcji jest wyra»eniem, dlatego przy prze-
kazywaniu funkcjom argumentów równie» zachodza przeksztaª-
cenia typów.
\vspace{0.2cm}
\begin{verbatim}
==, !=
Oeprator nazywany rzutem:
&& -- operator koniunkcji logicznej
(nazwa typu) wyra»enie
|| -- operator alternatywy logicznej
wyra»enie jest przeksztaªcane wedªug podanych reguª do typu
okre±lonego przez nazwa-typu.Np.
! -- opeartor negacji
sqrt((double) n);
i<j-1 jest r\' ownowa\. zne i<(j-1)
Operatory zwiekszania i zmniejszania: ++ i {
for (i=0; i<lim-1 && (c=getchar())
!= '\n' && c!= EOF; ++i)
#include <stdio.h>
/* zlicz znaki wejsciowe; wersja 1 */
void main()
{
s[i]=c;
long nc=0;
Przeksztaªcenia typów
while (getchar() != EOF)
++nc;
printf("%ld\n",nc);
}
Ogólna zasada:
automatycznie wykonuje sie tylko takie przeksztaªcenia, w
których argument "cia±niejszy jest zamieniany na obiekt "ob-
szerniejszy" bez utraty informacji.
Wyra»enia, ktre nie maja sensu, jak np. u»ycie obiektu typu
float do indeksowania tablicy, sa niedozwolone.
Wyra»enia, w których mo»e wystapi¢ utrata informacji, moga
powodowa¢ wypisanie komunikatu ostrzegawczego, ale nie saza-
bronione.
Dziaªaja tylko w odniesieniu do zmiennych.
(i+1)++ jest BEDEM!
Przykªad:
Plik z chomika:
lazarusp22
Inne pliki z tego folderu:
W01.PDF
(53 KB)
W07.PDF
(72 KB)
W13.PDF
(72 KB)
W14.PDF
(64 KB)
W08.PDF
(61 KB)
Inne foldery tego chomika:
Lekcje jezyka c
Wgłąb Języka C
Zgłoś jeśli
naruszono regulamin