NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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
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á!

Odpovědět
6.10.2016 0:26
"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
Odpovídá 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.

Odpovědět
13.2.2017 18:56
New kid back on the block with a R.I.P
Avatar
DarkCoder
Člen
Avatar
Odpovídá 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..

Odpovědět
13.2.2017 20:06
"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)

 
Odpovědět
10.7.2017 9:46
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?

Odpovědět
16.11.2018 12:11
"Whether you think you can, or you think you can't - you're right."(Henry Ford)
Avatar
Odpovídá 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.

 
Odpovědět
31.12.2018 16:33
Avatar
madewman
Člen
Avatar
Odpovídá na Štefan Pilát
madewman:31.12.2018 16:37

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

Odpovědět
31.12.2018 16:37
"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ě??

 
Odpovědět
20.10.2019 8:54
Avatar
Odpovídá 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.

Odpovědět
20.10.2019 10:41
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ů".

Odpovědět
6.8.2021 9:34
=)
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 10 zpráv z 24.