![]() |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() ![]() ![]() |
|
celá znamanková | celá bez znaménka | reálná |
signed char | unsigned char | float |
short | unsigned short | double |
int | unsigned | long double |
long | unsigned long | - |
Tabulka vypadá na první pohled složitě, ale pojmenování má svojí logiku. Celočíselné typy se jmenují char, short, int a long. Místo short a long lze napsat také short int a long int. Až na char (kde to norma C nespecifikuje) jsou všechny implicitně znaménkové, explicitně to dá určit klíčovými slovy signed a unsigned. Například místo long tak můžete napsat signed long nebo i signed long int. Velikost typu v bytech lze zjistit operátorem sizeof. Vždy platí, že odpovídající znaménkové a bezznaménkové typy jsou stejně velké, dále C zaručuje, že sizeof(char) je jedna. Spolehnou se také můžeme, že
sizeof(short) <= sizeof(int) <= sizeof(long)
Konkrétní velikosti norma C nespecifikuje. Typ int by měl být nejchutnější pro danou architekturu, od dob MS DOSu, kde byl int dvoubytový, vesměs platí, že sizeof(int) == 4, ale je dobré vědět, že to Céčko nezaručuje. V N bitech lze uchovat 2N různých hodnot, tím je dán i rozsah jednotivých typů. Znaménkové reprezentují celá čísla od - 28 * sizeof(typ) - 1 do 28 * sizeof(typ) - 1 - 1 a bezznaménková od 0 do 28 * sizeof(typ) - 1 - 1 včetně.
V případě reálných typů můžeme použít float, double a long double, rozsah a přesnost závisí na implementaci. Úsporný, ale málo přesný a s malým rozsahem je float, naopak long double je velký, ale zato přesnější a s velkým rozsahem. Typ double je někde uprostřed.
Vypadá to celé dost složitě, ale v praxi se obvykle používá int a double, s nimi nejčastěji pracují i knihovní funkce. Céčko nemá specifický typ pro boolovské hodnoty Ano/Ne, zde se používá int, nula znamená Ne a jakákoli jiná hodnota (nejčastěji 1) Ano. Jako znak (písmeno) se používá char, aniž bychom specifikovali, zda je signed nebo unsigned. Jelikož char je zároveň číselný typ, můžeme se znaky počítat i bez explicitní konverze na ASCII hodnotu.
V příštím díle si ukážeme, jak definovat proměnnou a dojde i na zápis konstant.
|
||
DISCUSSION
For this item is no comments. |
||
Add comment is possible for logged registered users.
|
1. |
Pacman linux Download: 5101x |
2. |
FreeBSD Download: 9312x |
3. |
PCLinuxOS-2010 Download: 8803x |
4. |
alcolix Download: 11194x |
5. |
Onebase Linux Download: 9912x |
6. |
Novell Linux Desktop Download: 0x |
7. |
KateOS Download: 6462x |
1. |
xinetd Download: 2624x |
2. |
RDGS Download: 937x |
3. |
spkg Download: 5252x |
4. |
LinPacker Download: 10402x |
5. |
VFU File Manager Download: 3397x |
6. |
LeftHand Mała Księgowość Download: 7492x |
7. |
MISU pyFotoResize Download: 3094x |
8. |
Lefthand CRM Download: 3762x |
9. |
MetadataExtractor Download: 0x |
10. |
RCP100 Download: 3378x |
11. |
Predaj softveru Download: 0x |
12. |
MSH Free Autoresponder Download: 0x |