Proměnné a konstanty

3. díl - Proměnné a konstanty

Petr Sklenička       22.06.2010       C++/C       17546 zobrazení

Tento díl je zaměřen na proměnné a konstanty. Po přečtení tohoto dílu budete vědět, jak proměnnou nebo konstantu definovat a jak s nimi dále pracovat. To vše je pak ukázáno na krátkém příkladě, konkrétně na výpočtu obsahu kruhu.

Co je to proměnná

Jedná se o nějaké místo, kde je možné uchovat danou informaci. Jde vlastně o místo v paměti Vašeho počítače, na které uložíme potřebnou hodnotu a s touto hodnotou můžeme poté dále pracovat. Je nutné si uvědomit, že v tomto případě se jedná pouze o dočasné uložení, čili po vypnutí programu se hodnota ztratí. Pokud bychom chtěli hodnotu uložit trvale, můžeme ji zapsat například do textového souboru nebo ji můžeme uložit do databáze. To však není předmětem tohoto dílu.

Pokud chceme v programu definovat proměnnou, musíme překladači říct, o jaký druh se bude jednat (znak, celé číslo, apod.). Na tomto základě pak kompilátor vymezí v paměti potřebné místo.

Základní typy proměných

V následující tabulce najdete přehled typů proměnných v jazyce C++, společně s velikostí, kterou zabírají v paměti.

Typ

Hodnoty Velikost
unsigned short int 0 – 65 535 2 B
short int -32 768 – 32 767 2 B
unsigned long int 0 – 4 294 967 295 4 B
long int -2 147 483 648 – 2 147 483 647 4 B
int -2 147 483 648 – 2 147 483 647 4 B
unsigned int 0 – 4 294 967 295 4 B
char 256 znakových hodnot 1 B
float 1,2e-38 – 3,4e38 4 B
double 2,2e-308 – 1,8e308 8 B
bool true nebo false 1 B

Velikost proměnných se může lišit, záleží to na typu překladače a počítače. Rozmezí hodnot není nutné si přesně pamatovat, já osobně si to také nepamatuji. Důležité je vědět to, že do proměnné typu int uložíte pouze celá čísla, pokud napíšete unsigned, znamená to kladná čísla. Dále si pamatujte, že do proměnných typu float a double je možné uložit desetinná čísla, proměnná typu char slouží k uložení znakubool nabývá pouze hodnot true nebo false. Pro naše účely nám zatím tyto vědomosti budou stačit.

Jak tedy definovat proměnnou v programu?

Pokud chceme v programu zavést proměnnou, napíšeme nejprve její typ (double, bool, int apod.), následuje mezera a název proměnné. Pak můžeme hned do proměnné přiřadit hodnotu, nebo napíšeme středník s tím, že hodnotu přiřadíme později. Název proměnné může být tvořen prakticky jakoukoliv kombinací čísel a písmen (bez háčků a čárek), nesmí však obsahovat mezery. Snažte se vždy proměnnou pojmenovat tak, aby její název napovídal k čemu proměnná slouží.

 int CeleCislo;                        // definice proměnné typu int
unsigned long int VelkeCeleCislo;    // definice proměnné unsigned long int

Na ukázce vidíte definici dvou proměnných – obdobným způsobem můžete definovat i ostatní typy proměnných. Jen připomínám, komentáře není nutné opisovat. Proměnné, které jsem v ukázce definoval, zatím nemají žádnou hodnotu. Pokud chceme do proměnné nějakou hodnotu přiřadit, použijeme operátor přiřazení ( = ).

 // Přiřazení hodnot do proměnných
CeleCislo = 120;
VelkeCeleCislo = 5000;

Přiřadit hodnotu do proměnné můžeme také hned při jejím definování. To provedeme takto:

 // Přiřazení hodnot do proměnných
int CeleCislo = 120;                       
unsigned long int VelkeCeleCislo = 5000;

Jak jistě vidíte, nejedná se o nic složitého. S proměnnými je pak možné provádět matematické operace (pokud se jedná o proměnné, mající číselnou hodnotu). V následující ukázce jsou definovány tři proměnné, do dvou z nich přiřadíme hodnoty a do třetí hodnoty přiřadíme jejich podíl.

 float cislo1 = 5;    
float cislo2 = 2;

int vysledek = cislo1 / cislo2;

Nyní se na kód podívejte a zkuste říct, jaká hodnota je nyní v proměnné vysledek. Myslíte si, že hodnota 2,5? Pokud ano, je to špatně. V proměnné vysledek je hodnota 2. Ptáte se proč? Proměnná vysledek je typu int, což znamená celé číslo. Výsledek se tedy zaokrouhlil směrem dolů na celé číslo. Kdybychom chtěli dosáhnout výsledku 2,5, musela by proměnná vysledek být typu float nebo double. Obdobným způsobem je možné provádět operace sčítání, odčítání a násobení. ( +, –, * ).

Konstanty

Obdobně jako proměnné, tak i konstanty slouží k uložení nějaké hodnoty. Rozdíl je ale v tom, že hodnotu proměnné můžete v programu libovolně měnit, kdežto hodnotu konstanty měnit nelze. V jazyce C++ máme na výběr ze dvou možností, jak definovat konstantu.

Prvním způsobem je užití klíčového slova const. Konstantu definujeme úplně stejně jako obyčejnou proměnnou, jen s tím rozdílem, že na začátek napíšeme slovo const.

 const char mujZnak = 'r';

Na ukázce je vidět definice konstanty typu char, do které je přiřazen znak r. Všimněte si, že je uzavřen do apostrofů. Dále nezapomínejte, že pokud definujete konstantu, musíte jí hned také inicializovat, čili přiřadit hodnotu, kterou již dále v programu není možné měnit.

Druhý způsob, jak definovat konstantu, je použití klíčového slova define. Současný standard C++ ovšem považuje tento způsob deklarace za již překonaný, proto se na něj jenom letmo podíváme a dále jej používat nebudeme.

 #define mojeKonstanta 10;

Zde si hlavně všimněte, že chybí operátor přiřazení a není zde ani určen typ. Příkaz #define znamená pouhé nahrazení textu. V tomto případě tedy pokaždé, když preprocesor najde slovo mojeKonstanta, nahradí jej pouze hodnotou 10.

Program – obsah kruhu

Abychom si práci s proměnnými trochu procvičili, napíšeme si jednoduchý program na výpočet obsahu kruhu. V minulém díle jsem sliboval “kalkulačku”, která sečte dvě čísla, tu si však můžete napsat sami – bude to vesměs podobná záležitost.

Zadání je tedy snadné – po spuštění programu bude uživatel vyzván, aby zadal poloměr kruhu, načež mu program vrátí obsah tohoto kruhu. Předem podotýkám, že program nebude ošetřen pro případ zadání špatného vstupu, tedy pokud by uživatel místo poloměru zadal například nějaký text, program by nefungoval správně. Cílem tohoto dílu jsou však proměnné, proto nám to nebude vadit. Budeme předpokládat, že vstup bude vždy správný. Samozřejmě při nějaké větší aplikaci bychom si to nemohli dovolit.

 #include <iostream>
using namespace std;

int main()
{
    
const double pi = 3.14159;
    
double polomer;
    
double obsah;

     cout <<
"Zadejte polomer kruhu: ";
     cin >> polomer;

     obsah = pi * polomer * polomer;
     cout <<
"Obsah kruhu je " << obsah << ".\n";

    
return 0;
}

Jak vidíte, kód není nikterak složitý. První dva řádky by Vám měly být jasné z minulého dílu, stejně tak byste měli vědět, kde začíná a kde končí funkce main. Připomínám, že funkcí main začíná každý program. V programu máme tedy vytvořenou konstantu pi, do které je hned přiřazena hodnota 3.14159. Dále máme proměnné polomer a obsah. Těm není hned přiřazena hodnota, neboť ji dopředu ani neznáme. Následuje výpis textu Zadejte polomer kruhu, což je výzva pro uživatele. Následující řádek pro Vás ale je zatím neznámý – mám na mysli řádek cin >> polomer. Cin je objekt, který se stará o načtení vstupu, v našem případě se tedy do proměnné polomer uloží uživatelem zadané číslo. Abychom tento objekt mohli použít, musíme do našeho programu zahrnout iostream. Dále si všimněte, že “zobáky” ukazují opačným směrem než při použití cout. Správně se těmto “zobákům” říká operátor vyjmutí nebo nebo též výstupní operátor. Zatím se blíže objektem cin nebudeme zabývat, ale určitě se k tomu podrobněji dostaneme v nějakém dalším díle. Na dalším řádku se počítá obsah kruhu. Asi nemusím říkat, že obsah kruhu se vypočte jako poloměr na druhou krát pí. Poté následuje výpis na obrazovku. Zde se podívejte, že text je uzavřen do uvozovek, kdežto proměnná ne. Kdybychom název proměnné nechali v uvozovkách, nevypsala by se hodnota proměnné, ale právě její název. Na poslední řádku funkce main vrací hodnotu nula.

Kdybyste si chtěli napsat již zmiňovanou kalkulačku pro součet dvou čísel, potřebovali byste dvě proměnné, do kterých byste si pomocí cin uložili hodnoty (čísla, které by se měly sečíst). Pak už by stačilo jen do nějaké proměnné uložit součet a ten vypsat. Pokud chcete, můžete si to zkusit.

Závěrem

Pro tento díl je to již vše. Nyní byste měli mít základní znalost práce s proměnnými, což je velmi důležité, neboť bez proměnných se v programu jen velmi těžko obejdete. V příštím díle si probereme podmínky, které nám umožňují větvení programu. Na konci si opět napíšeme nějaký krátký program, kde podmínky využijeme.

 

hodnocení článku

3 bodů / 5 hlasů       Hodnotit mohou jen registrované uživatelé.

 

Všechny díly tohoto seriálu

 

Mohlo by vás také zajímat

C++/CLI a interoperabilita managed a unmanaged kódu - díl 1.: Úvod do jazyka a základní konstrukce

V tomto článku je popsána nadstavba C++ pro práci s .NET prostředím zvaná C++/CLI umožňující vytvářed mixed assembly obsahující jak managed tak unmanaged kód. V prvním díle je popsána myšlenka jazyka a základní syntaktické konstrukty (základní typy, podmínky, cykly, pole, namespace a část tříd a objektů). U čtenáře je předpokládána znalost .NET frameworku a nativního programování nejlépe v C++ (alespoň syntaxi a základy).

C++/CLI a interoperabilita managed a unmanaged kódu - díl 2.: Složitější konstrukty, low-level přístup a generické programování

V tomto článku je popsána nadstavba C++ pro práci s .NET prostředím zvaná C++/CLI umožňující vytvářed mixed assembly obsahující jak managed tak unmanaged kód. V tomto díle jsou popsány pokročilejší partie jazyka týkající se hlavně objektů, low-level přístupu k managed objektům a generického programování.

Virtuální souborový systém

Článek pojednává o způsobu návrhu virtuálního souborového systému. Před čtením Vám doporučuji stáhnout si a přečíst zadání, abyste věděli o co vlastně jde. Ke stažení jsou i zdrojové kódy v jazyce C++. Aplikace asi nemá žádné velké využití, nicméně přišlo mi to jako zajímavý problém - jednalo se o semestrální projekt.

 

 

Nový příspěvek

 

enter

m8m problem ze kdyz zadam cislo a odëntruju tak mi program zmizi misto vysledku co s tim?

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Proměnné a konstanty

Dobrý den,

moc se mi líbí Váš tutoriál a mám drobný nápad na vylepšenný. Co ke každému takovému příkladu dávat hotový zabalený kprogram, který si bude možno stáhnout?

Děkuji

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Díky za Váš zájem. Přidat ke článku zabalený program není žádný problém. Jenom nevím, jestli jste myslel přidat ke článku program, který je vždy na konci dílu, nebo ještě nějaký další.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Ke každému dílu dát to, co tady vysvětlujete, jako zabalený program.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

http://www.xingbing66.com/ cephalexin nexium and xanax together 35807 http://www.truthhappiness.com/levitra.ht... levitra 90712 http://www.81yiyu.com/ prednisone 8556 http://www.rmspnaturecenter.org/accutane... accutane 05297

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

http://www.storiesoftheoldwest.com/ buy car insurance online >:-PPP http://www.paintedpinktoes.com/cheap_hea... california health insurance 436 http://www.paintedpinktoes.com/health_in... new york health insurance 8-(((

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

<a href=http://www.acworth.org/google/buysomaonl...>buy soma online</a> soma inn cafe - soma online rx

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Proměnné a konstanty

Som zaciatocnik a pre mna je to skutocne zaujimave.

Skusam sam doplnit dany priklad o dalsie moznosti vypoctu (obsah a obvod stvorca a pod.) a nasledne vystup na obrazovku a celkom sa mi dari.

#include <iostream>
using namespace std;

int main()
{
	const double pi = 3.14159;
	double polomer;
	double obsahkruhu;

	cout << "Program pre vypocet obsahu kruhu \n";
	cout << "\n";
	cout << "Zadajte polomer kruhu: ";
	cin >> polomer;

	obsahkruhu = pi * polomer * polomer;
	cout << "Obsah kruhu je: " << obsahkruhu << ".\n";
	
	double stranaa;
	double stranab;
	double obsahstvorca;
	double obvodstvorca;

	cout << "\n";
	cout << "Program pre vypocet obsahu a obvodu stvorca \n";
	cout << "\n";
	cout << "Zadajte stranu A: ";
	cin >> stranaa;
	cout << "Zadajte stranu B: ";
	cin >> stranab;

	obsahstvorca = stranaa * stranab;
	obvodstvorca = stranaa + stranaa + stranab + stranab;
	cout << "Obsah stvorca je: " << obsahstvorca << ".\n";
	cout << "\n";
	cout << "Obvod stvorca je: " << obvodstvorca << ".\n";

	return 0;
}

Mozno to znie smiesne pre toho kto programuje dlhsie ale pre mna je to nove a tesim sa z kazdeho uspechu.

Preto este raz dakujem za tento serial a dufam ze bude dalej pokracovat. Zelam autorovi vela uspechov.

Lubos

nahlásit spamnahlásit spam -1 / 3 odpovědětodpovědět

Těší mě, že se Vám seriál líbí, zároveň chválím Váš přístup a snahu udělat něco sám.

Ještě takový malý detail ke kódu - když chcete zalomit více řádků, nemusíte používat cout vícekrát, klidně je možné napsat toto:

cout << "Nejaky text\n\n\n\n\n";

Kdyby jste napsal cout pětkrát, chyba by to samozřejmě nebyla, je jen na Vás jak to uděláte.

nahlásit spamnahlásit spam 1 / 3 odpovědětodpovědět

iasfbj

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

znphxgnt

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

uuylktu

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

nffknv

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

tiuawrmj <a href="http://ggqdeb.com/ ">tdzkbpb</a>

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Proměnné a konstanty

Když už si udělám nějakou tu "kalkulačku" tak jak to mám uložit, tak aby se to dalo používat. Ne přes Microsoft Visual (ctrl + F5) ale normálně?

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Proměnné a konstanty

Ahoj, nějak mi nejde spustit program. Naprogramoval jsem si kalkulačku podle vašeho návodu, ale když spustím debug tak mi to napíše chybu ve funkci double a;, prosím pomozte.


| #include <iostream>
 using namespace std;
 
 int main()
 {
	 cout << "KALKULACKA\n";
	 cout << "verze 1.00\n";
	 cout << "Piste jen cisla\n\n\n";

	 

     const double pi = 3.14159;
     double polomer;
     double obsah;
	 double delka;
 
     cout << "Zadejte polomer kruhu: ";
     cin >> polomer;
 
     obsah = pi * polomer * polomer;
     cout << "obsah kruhu je : " << obsah << "\n";

	 delka = 2 * pi * polomer;
	 cout << "delka kruznice je : " <<delka << "\n"

	 double a;
	 double b;
	 double c;
	 double scitani;
	 double obsahkvadru;
	 double obsahkrychle;
	 double obsahctverce;
	 double obsahobdelniku;
	 double odcitani;
	 double nasobeni;
	 double deleni;
	 double povrchkrychle;
	 double exit;
	 
	 
	 
	 double objemvalce; 
	 double polomerm;
	 double vyska;
	 double povrchvalce;

	 

	 cout << "Zadejte hodnotu a:";
	 cin >> a;

	 cout << "Zadejte hodnotu b:";
	 cin >> b;
	  
	 cout << "Zadejte hodnotu c:";
	 cin >> c;

	 odcitani = a - b;
	 cout << "a - b = " << odcitani << "\n";
	 
	 scitani = a + b;
	 cout << "a + b = " << scitani << "\n";

	 nasobeni = a * b;
	 cout << "a * b = " << nasobeni << "\n";

	 deleni = a / b;
	 cout << "a / b = " << deleni << "\n";

	 obsahkvadru = a * b * c;
	 cout << "obsah kvadru : " << obsahkvadru << "\n";

	 obsahkrychle = a * a * a;
	 cout << "obsah krychle pro a : " << obsahkrychle << "\n";

	 povrchkrychle = 6 * (a * a);
	 cout << "povrch krychle pro a : " << povrchkrychle << "\n";

	 obsahctverce = a * a;
	 cout << "obsah ctverce pro a : " << obsahctverce << "\n";

	 cout << "Zadejte polomer : ";
	 cin >> polomerm;

	 cout << "Zadejte vysku : ";
	 cin >> vyska;

	 objemvalce = pi * polomerm * polomerm * vyska;
	 cout << "objem valce : " << objemvalce << ".\n"; 

	 povrchvalce = 2 * pi * polomerm * polomerm + 2 * pi * polomerm * vyska;
	 cout << "povrch valce : " << povrchvalce << ".\n";







	 
	 cout << "  MY SOFTWARE\n";
	 cout << "Games and Programs";
	 cin >> exit;

	return 0;	 
 }||

Prominte, že je to tak dlouhé.
 
nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Jen pro pořádek, double a není funkce. Chyba je v tom, že Vám na předchozím řádku (před double a) chybí na konci středník.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Aha děkuji nějak jsem to přehlédl.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Proměnné a konstanty

aky je medzi nimy rozdiel? (neviem ci to boli v tejto casti spominane aj clenske premenne ale v knihe ktoru citam som na to narazil a trosku to nechapem

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

ou v nadpise je chyba sorry ma tam byt "Premenne vs. Clenske premenne"

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Proměnné a konstanty

Dobrý den,

ještě se chci zeptat, do jaké sekce fóra máme dávat případné dotazy na chybu v kódu.

Děkuji

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

V diskusním fóru je nová sekce - C++, čili tam.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Děkuji

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Proměnné a konstanty

#include <iostream>

using namespace std;

int main()

{ int cislo1;

int cislo2;

int soucet;

cout << "Zadejte prvni cislo: "; cin >> cislo1;

cout << "Zadejte druhe cislo: "; cin >> cislo2;

soucet = cislo1 + cislo2;

cout << "Soucet je " << soucet << ".\n"; }

Tak to je na to sčítání, na další bych potřeboval znát nějaký příkaz "nebo", tedy "or"... To asi uvidím v nějaké další kapitole

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

#include <iostream>

using namespace std;

int main()

{ int cislo1;

int cislo2;

int soucet;

cout << "Scitaci kalkulacka \n";

cout << "Zadejte prvni cislo: "; cin >> cislo1;

cout << "Zadejte druhe cislo: "; cin >> cislo2;

soucet = cislo1 + cislo2;

cout << "Soucet je " << soucet << ".\n";

int cislo3;

int cislo4;

int rozdil;

cout << "Odcitaci kalkulacka \n";

cout << "Zadejte prvni cislo: "; cin >> cislo3;

cout << "Zadejte druhe cislo: "; cin >> cislo4;

rozdil = cislo3 - cislo4;

cout << "Rozdil je " << rozdil << ".\n";

int cislo5;

int cislo6;

int nasobek;

cout << "Nasobici kalkulacka \n";

cout << "Zadejte prvni cislo: "; cin >> cislo5;

cout << "Zadejte druhe cislo: "; cin >> cislo6;

nasobek = cislo5 * cislo6;

cout << "Nasobek je " << nasobek << ".\n";

int cislo7;

int cislo8;

int podil;

cout << "Delici kalkulacka \n";

cout << "Zadejte prvni cislo: "; cin >> cislo7;

cout << "Zadejte druhe cislo: "; cin >> cislo8;

podil = cislo7 / cislo8;

cout << "Podil je " << podil << ".\n"; }

Tak jsem si vzal vzor z výše zmíněného počítače obsahů a čeho všeho.. V podstatě jsem jen kopíroval sčítací kalkulačku a upravoval, bohužel pokud chce uživatel hned přejít třeba k dělení, nejde to. Chtělo by to znát "pokud", tedy "if", nevím jak to je v C++, stejně jako výše zmíněné nebo - or.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Logické operátory a podmínky jsou v daším díle. Jinak return 0 tam skutečně být nemusí, je pak ale lepší místo int main psát void main, čímž říkáme, že funkce nebude mít žádnou návratovou hodnotu.

Ještě k tomu pi - samozřejmě že to konstanta být nemusí, klidně jsme si to mohli uložit do databáze, z databáze do textového souboru a teprve pak jsme s tím mohli pracovat. Vzhledem k tomu, že tento díl byl zaměřen na proměnné a konstanty, udělal jsem pi jako konstantu, neboť hodnota pi bude vždy 3.14159...i v případě, že byste donutil Zemi otáčet se na opačnou stranu.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Ano, děkuju za zpětnou vazbu.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Mám do tas abich moch dělat kalkulačku tak misto const double pi mám napsatr co

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Máš napsat sociálce, že tě rodiče neposílají do školy

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Diskuse: Proměnné a konstanty

Opět tam nemusí být return 0 a pi nemusí být konstanta, může to být normální proměnná...

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Return tam být nemusí ale mělo by a pi je konstanta asi kvůli tomu že se mluví o konstantách. Víte co - nekritizujte a jděte do p***** jestli se vám to nelíbí. To že pi může být klasická proměnná víme i bez vašich pindů.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Já nic nepindám a vůbec to nemyslím špatně, na rozdíl od Vás. Když se něco učím tak se to chci naučit pořádně, vůbec jsem to nemyslel jako špatnou kritiku. Jen jsem chtěl, aby mi případně autor článků, které jesou velmi pěkné, napsal jak to je a jestli se třeba může vynechat i něco jiného apod.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Proměnné a konstanty

Dobry den, nemate v uvodni tabulce chybku? neznam C++, ale mate stejnou delku u "int" a "long int".

kamil

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Díky za upozornění, ale chyba to není. Velikost celého čísla (int) určuje procesor a kompilátor. U 32-bitových počítačů mají celočíselné hodnoty velikost 4 bajty a proto rozsah -2 147 483 648 až 2 147 483 647. V případě 16 bitového procesoru by velikost proměnné typu int byla 2 bajty, její rozsah by byl -32 768 až 32 767. Pak by tedy proměnná long int měla větší rozsah než jen int.

Dalo by se očekávat, že velikosti proměných budou specifikovány přesněji, ve skutečnosti je to ale trochu jinak. Typ short musí mít velikost menší nebo rovnu velikosti typu int a ta zase musí být menší nebo rovna velikosti typu long. Tato podmínka je v mé tabulce splněna, proto se nejedná o chybu.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

U 64-bitu je velikost int větší než long int? :)

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback