
Srovnávací graf
Základ pro porovnání | if-else | přepínač |
---|---|---|
Základní | Který příkaz bude proveden závisí na výstupu výrazu uvnitř příkazu if. | Který příkaz bude proveden, rozhodne uživatel. |
Výraz | příkaz if-else používá více příkazů pro více možností. | příkaz switch používá jeden výraz pro více možností. |
Testování | if-else prohlášení o rovnosti a logickém vyjádření. | příkaz switch switch test pouze pro rovnost. |
Hodnocení | if příkaz vyhodnocuje celé číslo, znak, ukazatel nebo plovoucí bod nebo booleovský typ. | příkaz switch vyhodnocuje pouze znakovou nebo celočíselnou hodnotu. |
Sekvence exekuce | Buď pokud bude příkaz proveden nebo je proveden příkaz else. | příkaz switch provede jeden případ za druhým, dokud se neobjeví prohlášení o přerušení nebo dokud není dosaženo konce příkazu switch. |
Výchozí provedení | Je-li podmínka uvnitř příkazu if nepravdivá, pak je ve výchozím nastavení proveden příkaz else, pokud je vytvořen. | Pokud se podmínka v příkazech přepínače neshoduje s žádným z případů, je pro tuto instanci proveden výchozí příkaz, pokud byl vytvořen. |
Úprava | Je obtížné upravit příkaz if-else, pokud je použit vnořený příkaz if-else. | Je snadné editovat případy přepínačů, protože jsou snadno rozpoznatelné. |
Definice if-else
Příkazy if-else patří do příkazů výběru v OOP. Obecná podoba příkazů if-else je následující
if (expression) {příkaz (y)} else {příkaz (y)}
kde „if“ a „else“ jsou klíčová slova a výpisy mohou být jedním výpisem nebo blokem výpisů. Výraz je pro každou nenulovou hodnotu vyhodnocen jako „true“ a pro nulu je „false“.
Výraz v příkazu if může obsahovat celé číslo, znak, ukazatel, plovoucí desetinnou čárku nebo to může být booleovský typ. Příkaz else je nepovinný v příkazu if-else. Pokud výraz vrátí hodnotu true, příkazy v příkazu if se provedou, a pokud vrátí hodnotu false, příkazy v příkazu else se provedou a v případě, že příkaz else není vytvořen, neprovádí se žádná akce a řízení programu se vyskočí příkazu if-else.
Umožňuje nám pochopit příklad.
int i = 45, j = 34; if (i == 45 & j == 34) {cout << "i jyou vybrat tmavý choclate"; přestávka; případ 2: cout << "zvolíte bonbón"; přestávka; případ 3: cout << "zvolíte lollypop"; přestávka; . . default cout << "nevyberete nic"; }
Zde se hodnota „i“ rozhodne, který případ se má provést, pokud uživatel zadá hodnotu „i“ jinou než 1, 2 nebo 3, provede se výchozí případ.
Klíčové rozdíly Mezi if-else a switch
- Výraz uvnitř, pokud příkaz rozhoduje, zda mají být příkazy provedeny v bloku bloku nebo pod jiným blokem. Na druhé straně výraz uvnitř příkazu switch určuje, který případ má provést.
- Pro vícenásobný výběr příkazů můžete mít více příkazů if. V přepínači máte pouze jeden výraz pro více možností.
- Příkaz if-esle kontroluje rovnost i logické vyjádření. Na druhé straně přepněte kontroly pouze na rovnost.
- Příkaz if vyhodnocuje celé číslo, znak, ukazatel nebo plovoucí bod nebo typ boolean. Na druhé straně příkaz switch vyhodnocuje pouze znak nebo datový typ celé číslo.
- Sekvence provádění je stejná jako u příkazu v případě, že se bude provádět blok nebo příkazy pod příkazem bloku se budou provádět. Na druhé straně výraz v příkazu switch rozhoduje, který případ má být proveden, a pokud po každém případu nepoužijete příkaz break, provede se do konce příkazu switch.
- Pokud je výraz uvnitř, pokud se jedná o false, proveden příkaz uvnitř jiného bloku. Pokud se výraz uvnitř příkazu switch změní na hodnotu false, provede se výchozí příkaz.
- Je obtížné editovat příkazy if-else, protože je obtížné sledovat, kde je požadována oprava. Na druhou stranu je snadné editovat příkazy switchů, protože je lze snadno sledovat.
Závěr:
Příkaz switch je snadno editovatelný, protože vytvořil samostatné případy pro různé příkazy, zatímco ve vnořených příkazech if-else je obtížné identifikovat příkazy, které mají být upraveny.