Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 4. diel - Typový systém v céčku druhýkrát: Dátové typy

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
DarkCoder
Člen
Avatar
DarkCoder:6.10.2016 0:26

Druhý článek o C a opět mnoho chyb. Datový typ short rozhodně nemá rozsah -128 až 127! Norma stanovuje minima, zde je 16bitu. V 16bitovém prostředí není rozdíl mezi typy int a short int. Ve 32bitovém prostředí zase mají int a long int stejnou velikost. Když už se tu řeší modifikátory datových typů, tak je třeba zmínit přesně a správně, který modifikátor se pro který datový typ používá!

unsigned float, unsigned double a podobně...

To opravdu ne..

Nad výběrem datového typu nemusíte moc přemýšlet a většinou se používá jednoduše int..

Odvážné tvrzení. Aby typ přesněji splňovat požadavky je důležité. Obzvláště když se tyto modifikované typy užívají ve funkcích (jako třeba printf(), scanf()). Při výpisu celých čísel modifikovaných pomocí short, long, unsigned opravdu nestačí použít jen specifikátor %d. Funkce potřebují znát přesný typ přebíraných dat. Pokud bychom nad tím moc nepřemýšleli, tak to dopadne jako v příkladu výše, kde je špatně použit specifikátor %d místo správného %hd.

short maxShort = SHRT_MAX;
printf("SHORT: zabírá %d počet bajt/y/ů a největší možné číslo je %d\n", sizeShort, maxShort);

Modifikátory datových typů:
long - použití u int, double
short - použití u int
signed - použití u char, int (lze použít spolu s modifikátory long nebo short)
unsigned - použití char, int (lze použít spolu s modifikátory long nebo short)

Když do floatu chceme dosadit přímo ve zdrojovém kódu, můžeme použít sufix f, u double sufix d:

double d = 10.02d;

Žádný sufix d neexistuje! Nespecifikujeme-li sufix, je konstanta brána jako ty double. Pro float používáme F, pro long double L.

Znaková proměnná může být reprezentována i pomocí konstanty se zpětným lomítkem. (\n \r \t \a apod.)

Opět apeluji na důslednou kontrolu výkladu, jinak to čtenářům, kteří se seznamují a chtějí naučit jazyk C, nic nedá!

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na DarkCoder
David Hartinger:13.2.2017 18:56

Ty typy se zde řeší pořád, proto je v článku poznámka "Velikosti a přítomnost některých datových typů se může někdy různit podle zvoleného standardu céčka a cílové architektury počítače." Koukni na diskuzi předtím, my nemůžeme za to, že je tolik standardů a je to všude implementované jinak, již se to měnilo, řešilo se to tu, ty hodnoty jsme ověřovali.

Unsigned double/float byla opravdu chyba.

Co se týká přemýšlení nad datovými typy, tak to není míněné z hlediska modifikátorů a není to ani odvážné tvrzení. Int má rozsah zvolený podle architektury (jak jsi sám předtím napsal) a pokud někde neděláme nějaká šílená pole, je rozumné ho použít, protože bude rychlý, většinou nám nepřeteče a nemusíme se zabývat studováním typů, které jsou stejně všude úplně jiné.

Suffix D opravdu není, to jsem opravil.

Odpovedať
New kid back on the block with a R.I.P
Avatar
DarkCoder
Člen
Avatar
Odpovedá na David Hartinger
DarkCoder:13.2.2017 20:06

V pořádku, typy se řešily, řeší a budou řešit stále. Tam hlavně bylo do očí bijící že short má rozsah -128 až 127, což odpovídá 1 bytu a ne dvěma. Ostatní, přesně jak píšeš, je dané architekturou počítače. Pokud modifikátory nepoužíváme, můžeme se problémům vyhnout. V drtivé většině aplikací s typem int vystačíme. Využití modifikátoru je zejména u znakového typu char, kde někde může být char interpretován jako proměnná se znaménkem a jinde bez znaménka. Díky za korekturu..

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
random IT
Člen
Avatar
random IT:10.7.2017 9:46

main.c:21:26: error: 'INT_MAX' undeclared (first use in this function)

Avatar
madewman
Člen
Avatar
madewman:16.11.2018 12:11

Dobrý den pri zadani cislo 55.2
mi vypise toto 55.2000000
je mozne to cislo neako obsekat aby ukazalo 55.2?

Odpovedať
"Whether you think you can, or you think you can't - you're right."(Henry Ford)
Avatar
Odpovedá na madewman
Štefan Pilát:31.12.2018 16:33

Je, dej "%.1f". To číslo za tečkou udává počet desetinných míst, na kolik se to má oseknout.

Avatar
madewman
Člen
Avatar
Odpovedá na Štefan Pilát
madewman:31.12.2018 16:37

Ok ďakujem ,už som na to prišiel skôr.

Odpovedať
"Whether you think you can, or you think you can't - you're right."(Henry Ford)
Avatar
0
Člen
Avatar
0:20.10.2019 8:54

Nevíte někdo co dělám špatně??

Avatar
Odpovedá na 0
Neaktivní uživatel:20.10.2019 10:41

Diskuzi týkající se tvé otázky přesměrovávám k předchozí lekci.

Odpovedať
Neaktivní uživatelský účet
Avatar
Krysto Foxik
Člen
Avatar
Krysto Foxik:6.8.2021 9:34

Ahoj, nějak mi nesedí první tabulka.
Pokud má short rozsah "-128 až 127 nebo -32 768 až 32 767" hodnot, tak by mělo být v posledním sloupci 8-16 bitů a ne "16-32bitů".

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 24.