Home
Esempio
ITA - Appunti Cpp 007 - switch
March 2024 (413 Words, 3 Minutes)
linux
cpp
Il costrutto switch
è una delle istruzioni mediante le quali si implementa il controllo di flusso in C++.
Esempio switch-case
#include <iostream>
int main()
{
const int i = 2;
switch (i)
{
case 1:
std::cout << '1';
case 2: // esecuczione inizia in questa etichetta
std::cout << '2';
case 3:
std::cout << '3';
[[fallthrough]]; // attributo C++17 per silenziare il warning per il fallthrough
case 5:
std::cout << "45";
break; // terminare l'esecuzione
// se non viene dichiarata, vengono controllate anche i casi successivi
case 6:
std::cout << '6';
}
std::cout << '\n';
switch (i)
{
case 4:
std::cout << 'a';
default:
std::cout << 'd'; // quando nessuna condizione viene soddisfatta
// viene eseguita quella di default
}
std::cout << '\n';
switch (i)
{
case 4:
std::cout << 'a'; // non è eseguita
}
// quando vengono usate delle enumerazioni con gli withc molti compilatori
// riportano dei warning
enum color { RED, GREEN, BLUE };
switch (RED)
{
case RED:
std::cout << "red\n";
break;
case GREEN:
std::cout << "green\n";
break;
case BLUE:
std::cout << "blue\n";
break;
}
// the C++17 init-statement syntax can be helpful when there is
// l'inizializzazione C++17 può essere utile quando la conversione di
// un oggetto a intero o enum non è esplicita
struct Device
{
enum State { SLEEP, READY, BAD };
auto state() const { return m_state; }
/*...*/
private:
State m_state{};
};
switch (auto dev = Device{}; dev.state())
{
case Device::SLEEP:
/*...*/
break;
case Device::READY:
/*...*/
break;
case Device::BAD:
/*...*/
break;
}
// altri esempi ....
// in questo caso mai nessuno statement è eseguito
switch (0)
std::cout << "this does nothing\n";
// ....
switch (int n = 1)
{
case 0:
case 1:
std::cout << n << '\n';
}
}
Riferimenti
© 2024 Stefano Prina
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale Theme Moonwalk
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale Theme Moonwalk