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 [2019/09/16 09:14] – [Znaky] durdilovaccpp:literals [2020/11/20 17:37] (aktuální) bures
Řádek 1: Řádek 1:
-====== Literály datových typů ====== +====== Literály jednoduchých datových typů ====== 
-Zde je seznam ukázek literálů+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 ===== ===== 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 29: Řádek 66:
 </code> </code>
  
-===== Řetězcové literály ===== +===== Cvičení ===== 
-Typicky používané ve funkcích printf/scanf +  * Vytvořte programkterý bude vypisovat proměnné definované pomocí zde uvedených literálů. 
-<code c> +  * Rozšiřte edchozí program o načítání hodnot ze vstupu a vyzkoušejte zde uvedené formáty na vstupu.
-"Ahoj, jak se mas?" +
-"Jeden radek\nDruhyRadek\n" +
-</code> +
-==== Escape sekvence ==== +
-Pokud chceme v řetězci obsáhnout znakykteré mají speciální význam, jako třeba znak uvozovky ("), která ohraničuje řetězecMusíme použít tzv. escape sekvenci. Dalším íkladem může být apostrof (') zapsaný jako znakový literál. +
-Escape sekvence začíná znakem zpětné lomeno (\), za kterým následuje požadovaný znak, nebo řídící sekvence. +
- +
-=== Příklady escape sekvencí === +
-^ Escape sekvence ^ význam ^ +
-^ \n | nová řádka | +
-^ \t | tabulátor | +
-^ \" | uvozovka uvnitř řetězce | +
-^ \' | apostrof jako znakový literál | +
-^ \\\\ | zpětné lomeno |+
  
 +===== 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.1568618064.txt.gz
  • Poslední úprava: 2019/09/16 09:14
  • autor: durdilova