
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.17.141.114] |
![]() |
|
![]() |
|
|
Почему в Switche так можно,
int g; g = 1; а так нельзя int g = 1; ![]() |
Сообщ.
#2
,
|
|||||
|
Поточнее вопрос попробуй задать ![]() Где именно инициализация нельзя?
|
Сообщ.
#3
,
|
|||||
|
Так ругается
а так нет ![]() |
Сообщ.
#4
,
|
|
|
По-моему в стандарте говориться, что переменную можно объявлять в любом месте, куда можно запихать эту инструкцию. И по поводу switch тоже нет исключения.
Лично у меня компиляться нормально оба варианта от Lavrik'а. |
Сообщ.
#5
,
|
|||||
|
Нужно поставить скобки { }... |
Сообщ.
#6
,
|
|
|
а почему без них нельзя
![]() ![]() |
Сообщ.
#7
,
|
|||
|
Ограничения в компиляторе! Читай C2360. |
Сообщ.
#8
,
|
|||
|
Скобки нужны для создания области действия переменной. |
Сообщ.
#9
,
|
|
|
Ещё из этой же серии приколы с for(int i=0;...) и когда область видимости до конца блока, в котором объявлен for, хотя чисто принципиалино for'ом она(область видимости, в смысле) должна и ограничиться
ЗЫ Ликвидно для MSVisualC++ |
Сообщ.
#10
,
|
|
|
почему только внутри for?
![]() объявление же вне фигурных скобок, обозначающих тело цикла сделано, так что как есть -- правильнее ![]() ![]() |
Сообщ.
#11
,
|
|
|
2Visitor: Насколько я помню, значение переменной-счетчика после выхода из for неопределено - не факт, что там будет именно то, что было на последнем шаге цикла. Только я не помню, верно ли это для VC++.
|
Сообщ.
#12
,
|
|
|
Ну... мне еще ни разу не попадался компилятор, имеющий такой еффект... Хотя не не могу исключить его существование, например, при использовании каких-то особенных (профильных и т.п.) библиотек и режимов компиляции
![]() --- Да и вообще, C -- не [ctrl_Y ![]() ![]() |
Сообщ.
#13
,
|
|||||
|
Вот с этим солгасен ![]() Кстати, я залез в MSDN и нашел, что по стандарту C++, действительно, переменная, объявленная в операторе for, должна иметь в качестве области видимости только тело цикла. Но в MSVC++, by default, областью видимости считается та, в которой объявили for. Причем:
|
Сообщ.
#14
,
|
|
|
Что и требовалось доказатьЖ)))))
|