ccpp:konstanty

Konstanty

Konstanta je pojmenovaná hodnota, která se nemění. Nejčastěji její hodnotu definujeme už v době překladu. Programovací jazyk C++ podporuje i konstantu definovanou za běhu. Pro všechny konstanty platí, že jejich hodnotu nelze po jejím nadefinování změnit.

Preprocesorové konstanty se zpracovávají v první fázi překladu. Nemají žádný faktický vliv na paměť, protože se jedná pouze o automatizované nahrazení definovaného identifikátoru, obdobně jako by jste použili před kompilací příkaz editoru - najít a nahradit (CTRL+H) a nahradili konkrétní název za hodnotu.

Nespornou výhodou je nulová alokace extra paměti, nevýhodou naopak, že není silně typovaná a kompilátor o ní nemá valné informace.

#include <stdio.h>
#define PI 3.14159
 
// some code
 
int main(/*...*/)
{
  printf("Hodnota pi je %lf.\n", PI);
}

Jedná se o speciální proměnou označenou klíčovým slovem const, kterou je třeba definovat hodnotou. Kompilátor se k takové hodnotě chová jako k proměnné, ale zabrání změnu její hodnoty. Znamená to, že fakticky existuje na nějakém místě v paměti. Kompilátor pak může lépe kontrolovat syntax/sémantiku kódu a optimalizovat ho.

Tento typ konstanty je možné definovat i za běhu. Často se hodí pokud chceme něco na chvíli uložit pod vlastním identifikátorem a víme, že se daná hodnota nebude měnit. Kompilátor pak dokáže takovou konstantu optimalizovat pro lepší výkon.

#include <stdio.h>
const double PI = 3.14159;
 
// some code
 
int main(/*...*/)
{
  printf("Hodnota pi je %lf.\n", PI);
 
  int cislo;
  scanf("%d", &cislo);
  const int UZIV_KONSTANTA = cislo;
  printf("Konstanta definovana za behu je %d.\n", UZIV_KONSTANTA);
 
}
  • ccpp/konstanty.txt
  • Poslední úprava: 2021/11/15 10:20
  • autor: bures