Выделил из темы "С\С++ ...", дабы не оффтопить. Собственно введу в курс дела. Некоторые товарищи считают, что есть в компиляторе VisualC++ некий "глюк", который заключается в том, что у операторе множественного выбора switch не происходит выход после первого break. То есть так не выходит из switch: Code: ... cin >> var; switch ( var ) { case 1: cout << "OK!"; case 2: break; } ... А так выходит: Code: ... cin >> var; switch ( var ) { case 1: cout << "OK!"; case 2: break; break; } ... Отпишите, пожалуйста, у кого есть подобные "глюки". Если есть что сказать - можете писать сюда. Но лично мне, исходя из проведенных тестов, ясно, что нету в компиляторе глюка.
еще интересует стояло что либо из аддонов. возможно не срабатывал сейв сорца. Сколько примерно студия работала без перезапуска до появления бага.
када такая бага - ставьте бряк на на код перед брейком и попробуйте потрейсить. Еще лучше нажать Debug -> Windows -> Disassembly и скинуть сорец сюда. Очень интересно понять откуда ноги растут. В ошибку компиля не верю. Сталобыть либо баг студии, либо баг в венде, типа не сейвится файл например. Ибо перекомпиляция принудительно заставляет ресейвить модифицированные файлы. [added] Та причем тут опенсорс. Я периодически кодю в QtCreator. Интересен вопрос бага.
Кстати, такая же проблема встречалась в случае с getchar(); Данная команда тупо пропускалась и не было никакого ожидания клавиши. или getch(); ..... не помню уже точно...
хм. интересно. аверы есть? проактивка? всегда ли пропускал в цикле? т.е. цикл есть, но ниразу не стопорицо, либо цикл есть, бывает что сопорнется, бывает что нет, в течение одного запуска программы.
Протестировал это же в студии 2010, ничего. Код: Code: while( var != -1 ) { switch ( var ) { case 1: cout << "OK!"; case 2: var = -1; break; default: cout << "defaultText"; } cout << "EXITING!"; } С getchar() это не совсем проблема. Ты наверняка перед вызовом гетчара вызывал функцию по типу scanf(): Code: scanf( "%d", &var ); Ты ввел число и нажал на энтер. В итоге твое число записалось в var, а символ перевода строки так и остается в сканфе. И после вызова getchar() ему передается этот символ перевода строки. Как то так.