ccpp:literals

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
ccpp:literals [2020/11/20 17:11] buresccpp:literals [2020/11/20 17:37] (aktuální) bures
Řádek 4: Řádek 4:
 ===== Celá čísla ===== ===== Celá čísla =====
 <code c> <code c>
 +// Desítková soustava
 int a = -42; int a = -42;
 int b = 0; int b = 0;
 int c = 10; 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;
 </code> </code>
 +
 +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 ===== ===== Čísla s plovoucí čárkou =====
 <code c> <code c>
 +// Typ float obsahuje znak f na konci
 float a = 3.14159f; float a = 3.14159f;
 float b = 0.5f; float b = 0.5f;
 +// První nulu lze vynechat
 float c = .5f; float c = .5f;
 double d = 3.14159; double d = 3.14159;
Řádek 20: Řádek 35:
 </code> </code>
  
 +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
 +<code c>
 +#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;
 +}
 +</code>
 +Zdroj: [[https://stackoverflow.com/questions/5026570/whats-the-use-of-suffix-f-on-float-value]]
 ===== Znaky ===== ===== Znaky =====
 <code c> <code c>
Řádek 28: Řádek 65:
 char e = '\''; //apostrof char e = '\''; //apostrof
 </code> </code>
 +
 +===== 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]]
  • ccpp/literals.1605888689.txt.gz
  • Poslední úprava: 2020/11/20 17:11
  • autor: bures