for( struct {int i; long i2;} x = {1, 1}; x.i2 < mid; x.i++, x.i2 = x.i * x.i )
{
std::cout << x.i2 << std::endl;
}
Пользователи компилятора от Microsoft, не пытайтесь повторить это дома — это не работает в MSVC++. Те кто пользовался VC6 помнят и другие косяки с переменными в циклах. Можно потренироваться в GNU C++ и в Comeau.UPDATE (2015-12-22): В Visual Studio 2015 данная фича языка C++ также не поддерживается, но в этой версии MSVS можно выбрать Clang 3.7 в качестве компилятора и тогда сборка будет успешной.
Даже не могу представить случая, где способ использования структур подобным способом реально бы помог. На мой взгляд, ни эффективности кода, ни размера кода не улучшится, зато читабельность кода только ухудшится. ИМХО
ОтветитьУдалитьТут область видимости всех переменных ограничена циклом. Это основное отличие от всех других возможных вариантов. Насколько это важно - решается в каждом конкретном случае.
ОтветитьУдалить