====== Literály jednoduchých datových typů ======
Literál představuje konkrétní hodnotu určitého datového typu ve zdrojovém kódu, kterou program během svého zpracování použije. Nejedná se o proměnnou, nebo prvek programovacího jazyka samotného. Jakmile je literál zpracován - například jeho přiřazením do proměnné - může dojít ke změně jeho hodnoty v rámci implicitní konverze datového typu.
===== Celá čísla =====
// Desítková soustava
int a = -42;
int b = 0;
int c = 10;
// Osmičková soustava - začíná číslicí 0
int o = 052
// Šestnáctková soustava - začíná 0x, nebo 0X - určuje velikost znaků
int x = 0x2a;
int X = 0X2A;
// Dvojková soustava - začíná 0b
int b = 0b101010;
Literály ve dvojkové soustavě jsou podporované od //C++14//, nebo pokud je umí daný kompilátor. Například v jazyce C, to není standardní ale kompilátor GCC ho podporuje v rámci svého rozšíření.
===== Čísla s plovoucí čárkou =====
// Typ float obsahuje znak f na konci
float a = 3.14159f;
float b = 0.5f;
// První nulu lze vynechat
float c = .5f;
double d = 3.14159;
double e = .2;
double f = 1.6e-19 // 1.6 x 10^-19
double g = 1.6E19 // 1.6 x 10^19
Pokud použijeme literál typu double do proměnné typu float ''float cislo = 3.14;'', tak ve většině případů půjde program zkompilovat a pravděpodobně poběží bez problému. Co se ve skutečnosti děje je automatické přetypování mezi double a float, které může vést ke ztrátě přesnosti. Viz následující příklad
#include
int main()
{
float f1 = 0.67;
if(f1 == 0.67)
puts("yes");
else
puts("no");
float f2 = 0.67;
if(f2 == 0.67f)
puts("yes");
else
puts("no");
return 0;
}
Zdroj: [[https://stackoverflow.com/questions/5026570/whats-the-use-of-suffix-f-on-float-value]]
===== Znaky =====
char a = 'X';
char b = '\n'; // nový řádek
char c = ' '; // mezera
char d = 'x';
char e = '\''; //apostrof
===== Cvičení =====
* Vytvořte program, který bude vypisovat proměnné definované pomocí zde uvedených literálů.
* Rozšiřte předchozí program o načítání hodnot ze vstupu a vyzkoušejte zde uvedené formáty na vstupu.
===== Zdroje a odkazy =====
* [[https://en.wikipedia.org/wiki/Literal_(computer_programming)]]
* [[https://en.cppreference.com/w/cpp/language/integer_literal]]
* [[https://en.cppreference.com/w/cpp/language/character_literal]]
* [[https://en.cppreference.com/w/cpp/language/floating_literal]]
* [[https://en.cppreference.com/w/cpp/language/string_literal]]
* [[https://en.cppreference.com/w/cpp/language/bool_literal]]