DODATEK B BIBLIOTEKA STANDARDOWA
INT_MAX |
+32767 |
INT__MIN |
-32767 |
LONG_MAX |
+2147483647 |
LONG-MIN |
-2147483647 |
SCHAR_MAX |
+127 |
SCHAR_MIN |
-127 |
SHRT_MAX |
+32767 |
SHRT_MIN |
-32767 |
UCHAR_MAX |
255 |
UINT_MAX |
65535 |
ULONG_MAX |
4294967295 |
USHRT_MAX |
65535 |
maksymalna wartość int minimalna wartość int maksymalna wartość long minimalna wartość long maksymalna wartość signed char minimalna wartość signed char maksymalna wartość short minimalna wartość short maksymalna wartość unsigned char maksymalna wartość unsigned int maksymalna wartość unsigned long maksymalna wartość unsigned short
Stałe wymienione poniżej (podzbiór <float.h>) odnoszą się do arytmetyki zmiennopozycyjnej. Jeśli jest podana wartość, reprezentuje ona minimalną wartość odnośnej wielkości. Każda implementacja określa sobie właściwe wartości.
FLT_RADIX |
2 |
FLT_ROUNDS | |
FLT-DIG |
6 |
FLT_EPSILON |
1E-5 |
FLT_MANT_DIG | |
FLT_MAX |
1E+37 |
FLT_MAX_EXP | |
FLT_MIN |
1E-37 |
FLT_MIN_EXP | |
DBL_DIG |
10 |
DBI__EPSILON |
1E-9 |
DBI__MANT_DIG | |
DBI__MAX |
1E+37 |
DBI__MAX_EXP | |
DBL_MIN |
1E-37 |
DBL_MIN_EXP
podstawa reprezentacji wykładnika potęgi, np. 2, 16 rodzaj zaokrąglania przy dodawaniu zmiennopozycyjnym
liczba cyfr dziesiętnych precyzji najmniejsza liczba x taka, że 1,0 + x ± 1,0 liczba cyfr podstawy FLT_RADIX w mantysie maksymalna liczba zmiennopozycyjna maksymalne n takie, że da się wyrazić FLT_RADIX"-1
minimalna znormalizowana liczba zmiennopozycyjna
minimalne n takie, że 10" jest liczbą znormalizowaną
liczba cyfr dziesiętnych precyzji najmniejsza liczba X taka, że 1,0 + x 1 1,0 liczba cyfr podstawy FLT_RADIX w mantysie maksymalna liczba zmiennopozycyjna double maksymalne n takie, że da się wyrazić FLT_RADIX/1-1
minimalna znormalizowana liczba zmiennopozycyjna double
minimalne n takie, że 10'1 jest liczbą znormalizowaną
Od czasu opublikowania pierwszego wydania tej książki definicja języka C uległa zmianom. W większości były to rozszerzenia oryginalnego języka sformułowane tak, aby zachować zgodność z dotychczasową praktyką; w niektórych przypadkach usunięto niejednoznaczności oryginalnej definicji; niektóre modyfikacje zmieniły dotychczasową praktykę. Wiele nowych udogodnień ogłoszono w dokumentach towarzyszących kompilatorom udostępnianym przez AT&T i następnie adaptowano przez innych dostawców kompilatorów języka C. Komitet ANSI, standaryzując później język, uwzględnił większość tych zmian, a także wprowadził inne znaczące modyfikacje. Część tych zmian przewidziano w kilku komercyjnych kompilatorach nawet przed ukazaniem się oficjalnego standardu języka C.
Niniejszy dodatek podsumowuje różnice między językiem zdefiniowanym w pierwszym wydaniu tej książki, a spodziewanym ostatecznym Standardem. Omówiono tu jedynie sam język, pominięto zaś otoczenie programów i bibliotekę; chociaż te są ważną częścią Standardu, nie ma wiele do porównywania, ponieważ w pierwszym wydaniu nie próbowano narzucać wymagań dotyczących otoczenia i biblioteki. 1
345
Aparat preprocesora został w Standardzie zdefiniowany dokładniej niż w pierwszym wydaniu książki i został rozszerzony: wprowadzono nowe operatory do łączenia słów (##) i tworzenia napisów (#); wprowadzono nowe instrukcje preprocesora, jak #elif i #pragma; jawnie dopuszczono ponowne deklaracje makra za pomocą tego samego ciągu leksemów; nie zastępuje się już parametrów wewnątrz napisów. Kontynuacja za długich wierszy za pomocą znaku \ jest dopuszczalna wszędzie, nie tylko w napisach i makrodefinicjach. Patrz p. A12.
• Minimalna znacząca długość lokalnych identyfikatorów została rozszerzona do 31 znaków; najmniejsza znacząca długość zewnętrznych identyfikatorów pozostaje ograniczona do 6 znaków z utożsamianiem małych i wielkich liter (wiele implementacji dopuszcza więcej znaków).
• Sekwencje trzyznakowe rozpoczynające się od ?? pozwalają wyrazić znaki nie występujące w niektórych zbiorach znaków. Wpowadzono takie sekwencje dla zna-