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 <stdio.h> 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.