Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 4 - Typový systém v céčku podruhé: Datové typy

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Krysto Foxik
DarkCoder:6.8.2021 10:23

Datový typ int spolu s použitým modifikátorem datového typu short (short int, short) rozhodně nezabírá v paměti 1 byte a nemá rozsah -128 až 127. Tento rozsah nabízí datový typ char (v některých implementacích) a datový typ char spolu s modifikátorem typu signed. Na toto už jsem reagoval v příspěvku před 4 lety! Bohužel to doposud nikdo neopravil.

Odpovědět
6.8.2021 10:23
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Lukáš Turek:9.11.2021 10:46

Neměla by být velikost long double 128, ne 80 bitů?

 
Odpovědět
9.11.2021 10:46
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Lukáš Turek
DarkCoder:9.11.2021 11:52

Na architektuře x86 je datový typ long double implementován jako datový typ o délce 80 bitů. Bývá ale uložen jako 12ti či 16ti bitová datová struktura.

Odpovědět
9.11.2021 11:52
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
DarkCoder
Člen
Avatar
DarkCoder:31.12.2021 0:22

Co by bylo dobré v článku doplnit, popř. opravit.

V C je pět základních datových typů - char, int, float, double, void.

short, long, long long, signed, unsigned jsou modifikátory datových typů, nikoli datové typy.

Rozsah typu char záleží na implementaci, nemusí být vždy -128 až 127.
Od toho slouží modifikátory signed a unsigned aby se jednoznačně určil rozsah.

Pokud už je zde zmínka o modifikátorech, sluší se poznamenat, že např.
signed, signed int, int znamenají totéž. Lze tedy označení int u modifikátorů vynechat.

Datový typ short int resp. short resp. signed short nemá velikost 8 bitů ale 16.

Není to jen důvod velikosti paměti pro použití toho konkrétního datového typu, ale rovněž rychlost. Přístup k proměnné zabírající 2 byty bude rychlejší nežli k proměnné zabírající 4 byty.

Dále je dobré doplnit, že i u celočíselné konstanty lze přesněji určit typ pomocí sufixu.
L - pro long (např. 0L), U - pro unsigned (např. 10U), oba sufixy lze kombinovat (např. 100UL).

Chybí zmínka o tom, že escape sekvence (např. \n) jsou rovněž znakové konstanty.

Je třeba být konkrétní, ne psát že modifikátor unsigned lze přidat k většině datových typů!

Hlavičkový soubor limits.h neobsahuje žádnou funkci. Obsahuje makra definující minimální a maximální rozsahy celočíselných typů. Rozsahy typů s pohyblivou desetinnou čárkou jsou uvedeny v hlavičkovém souboru float.h.

sizeof není funkce, ale operátor preprocesoru! Tedy vyhodnocení se provádí v době překladu. Výsledkem je beznaménkový celočíselný typ označovaný jako size_t.

Nakonec by bylo dobré zmínit se o specifikaci formátu ve funkcích printf() a scanf() pro každý datový typ a modifikovaný datový typ.

Odpovědět
31.12.2021 0:22
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 24.