ccpp:literals

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.

// 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í.

// 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

char a = 'X';
char b = '\n'; // nový řádek
char c = ' '; // mezera
char d = 'x';
char e = '\''; //apostrof
  • 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.
  • ccpp/literals.txt
  • Poslední úprava: 2020/11/20 17:37
  • autor: bures