Учитывая следующую последовательностьКак оператор switch сравнивает значения?
switch(1) {
case 1:
cout << "first \n";
case 2:
cout << "second \n";
default:
cout << "Not first nor the second";
}
выход
first
second
Not first nor the second
Я ожидаю, что выход будет
first
так, как сравниваются значения? Я знаю, что не использовал break заявление, но разве это не просто спасение процессора? Почему второй случай выполняется, поскольку существуют два разных целочисленных значения? Что мне не хватает?
Я использую gcc 4.9.2 с флагом -std = C++ 11.
Вы упускаете 'перерыв,' в конце каждого '/ default' блока случае. –
Не отвечает ли ваш код на собственный вопрос? – juanchopanza
Прочитайте определение оператора 'switch'. В нем указано, что обработка начинается с соответствующей метки и продолжается до тех пор, пока не будет выполнен «разрыв» или конец блока «switch». У вас нет перерывов, поэтому выполняется весь блок. – CiaPan