![]()
Základní rozhodovací strukturou v C++ je rozhodovací struktura If .. else. Tato struktura zajišťuje podmínečné provedení skupiny příkazů závisející na hodnotě výrazu.
  if (podmínka)
  {
    [příkazy]
  }
  [else
  {
    else_příkazy
  }
  ]
| podmínka | ||
|  
       Povinná. Výraz typu bool, nebo výraz, který lze převést standardními konverzemi na bool. Může obsahovat deklaraci.  | 
  ||
| příkazy | ||
|  
       Povinné - jeden nebo více příkazů. Vykonají se, když je podmínka vyhodnocena jako True. Jednotlivý příkaz musí být ukončen středníkem. Blok příkazů musí být uzavřen ve složených závorkách a středník za ním nepíšeme.  | 
  ||
| else_příkazy | ||
| 
       Volitelné. Jeden nebo více příkazů, které se provedou v případě, kdy podmínka podmínka není vyhodnocena jako True. Jednotlivý příkaz musí být ukončen středníkem. Blok příkazů musí být uzavřen ve složených závorkách a středník za ním nepíšeme.  | 
  ||
![]()
Použití podmíněného výrazu je velice jednoduché, předpokládejme například, že potřebujete rozdělit uživatele do tří skupin podle věku. V první skupině budou uživatelé mladší 18 let, v druhé skupině uživatelé starší než 18 let. Uživatelé, kterým je právě 18 let budou mít zvláštní kategorii. Podmíněný výraz bude složený následujícího tvaru:
  int vek = 0;   // definice proměnné vek a její inicializace na 0
  if (vek < 18)  // je-li vek < 18 proveď
    vekova_kategorie = "dite";
  else if (vek > 18) // je-li vek < 18 proveď
         vekova_kategorie = "dospely";
       else             // jinak
         vekova_kategorie = "osmnactilety";
![]()
Proměnná deklarovaná v podmínce příkazu if je viditelná jak v příkazy tak i v části else_příkazy. Mimo příkaz if proměnná nebude existovat!
  int x = 0;  // definice proměnné x a její inicializace na 0
    .....
  if ((int vek = x) < 18) 
             // definice proměnné vek, její inicializace a porovnání
    vekova_kategorie = "dite";
  else if (vek > 18)     // je-li vek < 18 proveď
         vekova_kategorie = "dospely";
       else                 // jinak
         vekova_kategorie = "osmnactilety";
 
Podmíněný ternární operátor umožňuje jednoduchým způsobem otestovat booleovský výraz a podle výsledku uskuteční jeden ze dvou příkazů.
(proměnná) = (booleovský výraz) ? (operand_true) : (operand_false);
| booleovský výraz | ||
| Testovaný výraz, může nabývat hodnot true nebo false. | ||
| operand_true | ||
|  
       Operand přiřazený do proměnné proměnná v případě vyhodnocení výrazu booleovský výraz jako true.  | 
  ||
| operand_false | ||
| Operand přiřazený do proměnné proměnná v případě vyhodnocení výrazu booleovský výraz jako false. | ||
![]()
V následujícím příkladu podmíněný ternární výraz použijeme k vytvoření negace výrazu. Počáteční hodnota v proměnné logicka je true. V ternárním výrazu je testovaný výraz vyhodnocen jako true. Proto ternární výraz vrátí první hodnotu, která se rovná false. Vrácená hodnota je poté přiřazena do proměnné logicka.
boolean logicka = true; logicka = (logicka) ? false : true;
 
Příkaz switch umožňuje programu Javy otestovat jestli jedna proměnná nabývá více různých hodnot. Formát příkazu switch je totožný s formátem téhož příkazu v C/C++.
  switch (testovaný_výraz)
  {
    [case konstanta :
      [příkazy-n;]
      [break;]
    ]
    [default :
      [default_prikazy;]
      [break;]
    ] 
  }
| testovaný_výraz | ||
| Povinné. Může se skládat z libovolného číselného nebo výčtového výrazu. | ||
| konstanta | ||
|  
       Povinné, vyskytne-li se klauzule case. Celočíselné konstanty nebo konstanty výčtových typů, které budou porovány s hodnotou testovaný_výraz. Musí být navzájem různé. Po vyhodnocení testovaný_výraz program přejde na příkazy za návěštím case, jehož konstanta se shoduje s hodnotou testovaný_výraz. 
  | 
  ||
| příkazy-n | ||
| Volitelné. Žádný, jeden nebo více příkazů vykonaných, jestliže testovaný_výraz odpovídá libovolné části z konstanta. Skupina příkazů je zakončena příkazem break; | ||
| default | ||
| Volitelné. Jeden nebo více příkazů vykonaných, jestliže testovaný_výraz neodpovídá žádné klauzuli z case. | ||
![]()
V následujícím příkladu příkaz switch určí hodnotu cena_vozu v závislosti na hodnote stáří vozu. Je-li stáří vozu rovné 2 nebo 3 rokům bude cena vozu stejná. Je-li auto starší než 5 let je cena_vozu rovna 1000.
  switch (stari_vozu)
  {
    case 1 : 
        cena_vozu = 300000;
        break;
    case 2 :
    case 3 :
        cena_vozu = 200000;
        break;
    case 4 :
        cena_vozu = 100000;
        break;
    case 5 :
        cena_vozu = 10000;
        break;
    default :
        cena_vozu = 1000;
        break;
  }
V příkladě si zejména všimněte použití příkazu break. U hodnoty stari_vozu = 2 není příkaz break uveden, pokud bude hodnota vybrána, budou se provádět příkazy až do doby než narazí program na příkaz break. To znamená přiřadí se hodnota cena_vozu = 200000.
![]()