====== 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]]