Statistika testů
K této kapitole
Zodpovězených: 0
Správně: 0
Špatně: 0
Úspěšnost: 0%
Nezodpovězených: 0

Pro testování a jeho statistické vyhodnocení je nutné se přihlásit.


Celkem
Zodpovězených: 0
Správně: 0
Špatně: 0
Úspěšnost: 0%
Nezodpovězených: 0

Celočíselné typy
Uvádíme přehled a užití datových typů pro práci s celými čísly.
RNDr. Dušan Kovář, Ph.D.
27. listopadu 2005
Počet návštěv: 16527

Uveďme si jednotlivé celočíselné datové typy přehledně v tabulce. Sloupec Název reprezentuje zkrácený název pro daný datový typ. Naopak ve sloupci Typ CTS je úplný název v rámci FCL (Framework Class Library - Knihovny tříd rámce .NET). Tyto typy musí být kompatibilní na celé platformě, to znamená i mezi různými programovacími jazyky. Proto je každý typ popsán přesným rozsahem a velikostí, jak ukazují další sloupce.

Název Typ CTS Popis Rozsah Velikost
sbyte System.SByte 8-bitové číslo se znaménkem -128 až 127 (-27 až 27-1)  1 B
short System.Int16 16-bitové číslo se znaménkem -32 768 až 32 767 (-215 až 215-1) 2 B
int System.Int32 32-bitové číslo se znaménkem -2 147 483 648 až 2 147 483 647 (-231 až 231-1) 4 B
long System.Int64 64-bitové číslo se znaménkem –9 223 372 036 854 775 808 až 9 223 372 036 854 775 807 (-263 až 263-1)  8 B
byte System.Byte 8-bitové číslo bez znaménka 0 až 255 (0 až 28-1)  1 B
ushort System.UInt16 16-bitové číslo bez znaménka 0 až 65 535 (0 až 216-1)  2 B
uint System.UInt32 32-bitové číslo bez znaménka 0 až 4 294 967 295 (0 až 232-1)  4 B
ulong System.UInt64 64-bitové číslo bez znaménka 0 až 18 446 744 073 709 551 615 (0 až 264-1) 8 B

Vztah mezi typy se znaménkem a bez znaménka můžeme demonstrovat na následujícím obrázku pro typ short a ushort:

V případě, že pracujete pouze s nezápornými hodnotami, můžete použít typ bez znaménka, který poskytuje v kladné oblasti více hodnot.

V následujícím příkladu definujeme postupně proměnné cislo1 až cislo8 na základě uvedených datových typů:

using System;

namespace CelociselneTypy.Priklad1
{
   class VstupniBodProgramu
   {
      static void Main()
      {
         // Deklarujeme proměnnou cislo1 typu sbyte:
         sbyte cislo1;
         // Deklarujeme proměnnou cislo2 typu short:
         short cislo2;
         // Deklarujeme proměnnou cislo3 typu int:
         int cislo3;
         // Deklarujeme proměnnou cislo4 typu long:
         long cislo4;
         // Deklarujeme proměnnou cislo5 typu byte:
         byte cislo5;
         // Deklarujeme proměnnou cislo6 typu ushort:
         ushort cislo6;
         // Deklarujeme proměnnou cislo7 typu uint:
         uint cislo7;
         // Deklarujeme proměnnou cislo8 typu ulong:
         ulong cislo8;
         
         Console.ReadLine();
      }
   }
}

Věnujte pozornost volbě celočíselného datového typu s ohledem na velikost čísel, která požadujete v proměnné ukládat. Celočíselná proměnná se chová jako počítadlo kilometrů. Jestliže je v proměnné již maximální hodnota a přičtete jedničku, rázem se dostanete na zcela nejnižší hodnotu, což je například ve finanční oblasti dost nemilá představa - vyděláte o korunu více a okamžitě pěkný dluh (u proměnných se znaménkem), případně jste na nule (u proměnných bez znaménka)! Zkusme následující příklad:

using System;

namespace CelociselneTypy.Priklad2
{
   class VstupniBodProgramu
   {
      static void Main()
      {
         int i = 2147483647;
         Console.WriteLine("i má maximální hodnotu");
         Console.WriteLine("i = {0}", i);
         
         Console.WriteLine("Přičteme k i jedničku");
         i = i + 1;
         
         Console.WriteLine("i = {0}", i);

         Console.ReadLine();
      }
   }
}

Podobně může dopadnout odečtení jedničky od nejnižší hodnoty. Zkusme to nyní například pro typ ulong (dlouhé celé číslo bez znaménka):

using System;

namespace CelociselneTypy.Priklad3
{
   class VstupniBodProgramu
   {
      static void Main()
      {
         ulong i = 0 ;
         Console.WriteLine("i má minimální hodnotu");
         Console.WriteLine("i = {0}", i);
         
         Console.WriteLine("Odečteme od i jedničku");
         i = i - 1;
         
         Console.WriteLine("i = {0}", i);

         Console.ReadLine();
      }
   }
}

Vyzkoušejme nyní příklad, ve kterém se bude k proměnné typu short neustále přičítat jednička. Zaměřte se na okamžik přetečení maximální hodnoty a návrat na minimální hodnotu:

using System;

namespace CelociselneTypy.Priklad4
{
   class VstupniBodProgramu
   {
      static void Main()
      {
         // Inicializujeme proměnnou i typu short na hodnotu 0:
         short i = 0;

         // Opakovaně vypisujeme i a zvětšujeme i o 1:
         while (true)
         {
            Console.WriteLine("i = {0}", i);
            i = (short) (i + 1);
         }
      }
   }
}

V tomto příkladu je velmi zajímavý řádek, který si raději zopakujeme:

i = (short) (i + 1);

Pokud neuvedeme jinak, považuje se celé číslo (zde 1) za typ int. Typ int je nejvhodnější pro výpočty, jelikož je 32-bitový a na 32-bitových systémech jsou operace s typem int nejefektivnější. Důvodem pro použití jiného typu pro celá čísla než typu int může být malý rozsah (v tom případě použijeme typ long) a nebo zbytečně velký rozsah (chceme šetřit paměť např. v případě mnoha celočíselných proměnných v poli - lze užít menší celočíselný typ). V ostatních případech volte vždy typ int. Navíc se i + 1 vyhodnotí také jako typ int a převedení (konverze) typu int na short je potenciálně nebezpečné. Představte si hodnotu 123456789 převedenou na hodnotu typu short! Proto je potřeba explicitně přetypovat typ int na short, což je právě provedeno na uvedeném řádku.

Dalším zajímavým momentem je příkaz while (příkaz cyklu). Tento příkaz provádí opakovaně příkazy ve svém tělě (složených závorkách), dokud je pravdivá podmínka v závorce. Klíčové slovo true znamená pravdu, tudíž se příkazy budou opakovaně provádět, dokud program násilně neukončíte.



Úkoly ke kapitole "Celočíselné typy"

Deklarujte pro každý celočíselný datový typ proměnnou. Nechť uživatel do každé z těchto proměnných zadá hodnotu. Hodnotu každé proměnné pak vypište na příkazový řádek.

Hodnocení kapitoly "Celočíselné typy"
Oslovila vás tato kapitola?
Ohodnoťte její obsah počtem bodů od 1 (nejhorší) do 10 (nejlepší):
Průměrné hodnocení: 9,375
Celkem hodnotilo 8 osob.
Jednotlivá hodnocení: 
Diskuze ke kapitole "Celočíselné typy"

Napadá vás zajímavá otázka související s touto kapitolou?

Přidejte do diskuze
Zatím diskutovaná témata:

vy kurvyyyyy [tvoje máma, 10.11.2016 13:11:32 ]  
666 cermat
Chyba v řešení [Procházka Pavel, 22.3.2006 13:57:42 ]  

Dobry den,

v reseni ukolu mate v posledni nabidce uzivateli "Zadejte číslo pro uint: ", ma byt ulong. Jinak diky za tenhle projekt, zrovna zacinam s C#, tak jste mi pomohli.

Pavel


Vyhledávání
Související kapitoly
Aritmetické operátory
Operátory pro vytváření číselných výrazů
Přečtěte si knihu
C# Programujeme profesionálně
Robinson S., Allen K. S., Cornes O., Glynn J., Greenvoss Z., Harvey B., Nagel Ch. a další
Computer Press 2003

Programování v Microsoft .NET - Webové aplikace
Prosise, Jeff
Computer Press 2002

Programování Microsoft Windows v jazyce C#
Charles Petzold
Computer Press 2003
Programovací jazyk C# | Programování Windows Forms | Architektura .NET | ASP.NET | Dodatky | Diskuze
RNDr. Dušan Kovář, Ph.D.
Gymnázium Olomouc-Hejčín