Форум программистов, компьютерный форум CyberForum.ru

Почему в switch нельзя определять переменные? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проясните освобождение памяти http://www.cyberforum.ru/cpp-beginners/thread926507.html
Допустим есть такой код: typedef struct COORDINATE { QVector<int> x; QVector<int> y; QVector<int> z; } Coordinate; public: void SaveCoord();
C++ Упрощение логического выражения Всем привет. Сейчас решаю задачу про шахматного коня по книжке Дейтелов. Там предлагается высчитать доступность каждой клетки и двигать коня туда, где доступность наименьшая. Чтобы ее рассчитать, надо, грубо говоря, из каждой клетки походить конём. Идея, как считать доступность уже есть, выглядит она примерно так (тут как минимум нет проверки границы массива): //board - двумерный массив,... http://www.cyberforum.ru/cpp-beginners/thread926503.html
C++ Тип string и subscript out of range
Доброго времени дня. Такая проблема. Обращаюсь к отдельному элементу массива: #include <iostream> #include <string> #include <conio.h> using namespace std;
C++ Если кого не затруднит, посмотрите где у меня ошибка
Вот задание: Даны две последовательности a1, a2, …an и b1, b2, …bm. (n>m). В каждой из них члены различны. Верно, ли что все члены второй последовательности входят в первую последовательность? У меня всё время пишет, что входит, хотя и разные числа в обоих массивах забиваю. Вот код, если кого не затруднит, подскажите, где я что пропустил #include<iostream.h> #include<windows.h>...
C++ char[] http://www.cyberforum.ru/cpp-beginners/thread926450.html
#include <iostream> using namespace std; #define N 4 #define S 2 int main() { int rate; int s=0;
C++ error lnk? При компиляции вылазит такая штука: 1>ConsoleApplication.obj : error LNK2028: ёё√ыър эр эхЁрчЁх°хээє■ ыхъёхьє (0A0005DE) "public: __thiscall Student_Info::Student_Info(void)" (??0Student_Info@@$$FQAE@XZ) т ЇєэъЎшш "int __cdecl main(void)" (?main@@$$HYAHXZ) 1>ConsoleApplication.obj : error LNK2019: ёё√ыър эр эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы "public: __thiscall Student_Info::Student_Info(void)"... подробнее

Показать сообщение отдельно
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
22.07.2013, 09:12     Почему в switch нельзя определять переменные?
Очень интересно. Область видимости у нас ограничена скобочками при switch, но при этом внутри них выполнится только то, что начинается с case. Это я к тому, что хоть и борландовый компилятор это хавает, но пишет предупреждение о недостижимости кода. Тогда как если сразу объявить и проинициализировать переменную, то уже выдает ошибку.
C++
1
2
3
4
5
6
7
8
9
int n = 1;
switch(n)
  {
  int x = 0; // Ошибка
  int t;  // Ништяк
  t = 0;  // Ништяк
  case 1 : {int i=5;  ShowMessage(t);} break;
  case 2 : n++; break;
  }
ShowMessage покажет мусор. То есть не ноль. Но при этом не заругается, так как переменная объявлена.
 
Текущее время: 00:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru