spse:pm1:datove-typy

Toto je starší verze dokumentu!


→ Slide 1

Datové typy

→ Slide 2

Podívejme se nyní na tabulku všech vestavěných celočíselných datových typů v C++, všimněte si typu int, který již známe z minula.

Datový typ Rozsah Velikost
signed char -128 až 127 8 bitů
unsigned char0 až 2558 bitů
short–32 768 až 32 76716 bitů
unsigned short0 až 65 53516 bitů
int–2 147 483 648 až 2 147 483 64732 bitů
unsigned int0 až 4 294 967 29532 bitů
long int-231 - 231-1 32 bitů
unsigned long int0 - 231-132 bitů

1)

→ Slide 3
Datový typRozsahPřesnost
float+-3.4 * 10−38 až +-3.4 * 10387 číslic
double+-1.7 * 10−308 až +-1.7 * 1030815 číslic
long double+-1.7 * 10−308 až +-1.7 * 1030815 číslic
  • Pozor, vzhledem k tomu, že desetinná čísla jsou v počítači uložena ve dvojkové soustavě, dochází k určité ztrátě přesnosti. Odchylka je sice téměř zanedbatelná, nicméně když budete programovat např. finanční systém, mohou se objevit problémy.
double d = 3.14;
float f = 3.14;
→ Slide 4
charU+00 až U+ff (0 až 255 nebo -128 až 127)8 bitůznak
booltrue nebo false (1 nebo 0)8 bitůlogická hodnota
↓ Slide 5
  • Typ char (character) nám reprezentuje jeden znak. Na rozdíl od typu string, který reprezentoval celý řetězec hodnot typu char, píšeme znaky v C++ do jednoduchých apostrofů:
char c = 'A';
↓ Slide 6
  • Typ bool nabývá dvou hodnot: true (pravda) a false (nepravda). Budeme ho používat zejména tehdy, až se dostaneme k podmínkám. Do proměnné typu bool lze uložit jak přímo hodnotu true/false, tak i výsledek logického výrazu nebo celé číslo (0 jako false a cokoli jiného jako true).
#include <stdio.h>
 
int main(void) {
 
bool b = false;
bool vyraz = (15 > 5);
printf("%d\n", b); 
printf("%d\n", vyraz); 
return 0;
}
→ Slide 7
typevýznam
d, iCelé číslo se znaménkem (Zde není mezi d a i rozdíl.
uCelé číslo bez znaménka.
oČíslo v osmičkové soustavě.
x, XČíslo v šestnáctkové soustavě. Písmena ABCDEF se budou malá při použití malého x, nebo velká při použití velkého X.
pUkazatel (pointer)
fRacionální číslo (float, double) bez exponentu.
e, ERacionální číslo s exponentem, implicitně 1 pozice před des. tečkou a 6 za ní. Exponent uvozuje malé nebo velké E.
g, GRacionální číslo s exponentem nebo bez něj (podle absolutní hodnoty čísla). Neobsahuje des. tečku, pokud nemá des. část.
cJeden znak.
sŘetězec.

2)

↓ Slide 8
#include <stdio.h>
 
int main(void)
{
    char *COPYRIGHT = "(C)";
    int ROK = 2003;
 
    printf("%i %u %o %x %X %f %e %G\n", -5, -5, 200, 200, 200, 10.0,
           10.0, 10.0);
    printf("%s %i\n", COPYRIGHT, ROK);
    return 0;
}
/* Výstup:
-5 4294967291 310 c8 C8 10.000000 1.000000e+01 10
(C) 2003
*/
→ Slide 9

Shrnutí

↓ Slide 10
  /* Zakladni pouziti - cteni ze vstupu
   */   
  printf ( "Cele cislo:\n" );
  scanf  ( "%d", &a ); /* pozor, & a */
  printf ( "a = %d\n", a );
 
  printf ( "Desetinne cislo (double):\n" );
  scanf  ( "%lf", &b ); /* pozor, & b, pozor %lf */
  printf ( "b = %f\n", b ); /* zde %f, ne lf */
 
  printf ( "Desetinne cislo (float):\n" );
  scanf  ( "%f", &c ); /* pozor, & c, pozor %f */
  printf ( "c = %f\n", c ); /* zde %f */
 
  printf ( "Znak (char), ne whitespace:\n" );
  scanf  ( "%c", &d ); /* pozor, & d */
  printf ( "d = %c\n", d ); 
  /* Proc nelze znak zadat?
   */
 
  printf ( "Retezec, max 19 znaku:\n" );
  scanf ( "%s", str ); /* pozor, zde ne & */
  printf ( "str = %s\n", str );
↓ Slide 11
  /* Dalsi formaty
   */
 
  printf ( "Unsigned int:\n" );
  scanf ( "%u", &u );
  printf ( "u = %d\n", u );
 
  printf ( "Short int:\n" ); 
  scanf ( "%hd", &s ); /* zde %h */
  printf ( "s = %d\n", s ); /* zde %d */
 
  printf ( "Hex: \n" );
  scanf ( "%x", &u ); /* cteme hex */
  printf ( "u = %u\n", u ); /* zobrazime jako dec, %u = unsigned int */
 
  printf ( "Oct: \n" );
  scanf ( "%o", &u ); /* cteme oct */
  printf ( "u = %u\n", u ); /* zobrazime jako dec */

  • spse/pm1/datove-typy.1610404500.txt.gz
  • Poslední úprava: 2024/07/07 16:48
  • (upraveno mimo DokuWiki)