Редко пользуюсь оператором switch, хотя думал, что знаю как он работает. Обычно я обязательно пользуюсь break, и switch тогда работает ожидаемо. Но вот я сделал примитивный пример, в котором не могу понять что происходит.
#include <iostream>
using namespace std;
int main (int argc, char *argv[]) 
{
    int i=0;
    switch (i)
    {
    	case 0  : { std::cout << "0"; }
        case 1  : { std::cout << "1"; }
      	default : { std::cout << "D"; }
    }
    return 0;
}Что выведет этот пример?
Вначале я думал что «0».
Потом не смог найти внятного описания default - выполняется ли это условие только если не подошло ничего из остального, или просто выполняется если до него дошло дело. Я склонился к тому, что default выполняется просто если до него дошло дело (небыло никаких break). Поэтому результат должен быть «0D».
На деле на gcc результат будет таким: «01D».
Два вопроса в связи с этим:
- С какого перепугу в результате затесалось 1?
- Как же все-таки должно срабатывать default?









