Недавно узнал любопытную вещь, о которой вообще говоря мало кто знает, а уж в реальном коде я такого не встречал вовсе. Речь идёт о возможности объявлять в циклах переменные разных типов. Это безобразие можно сотворить с помощью неименованной структуры:
const long N = VERY_VERY_LONG_VALUE;/*очень_очень_большое значение ;-) */
for( struct {int i; long i2;} x = {1, 1}; x.i2 < N; x.i++, x.i2 = x.i * x.i )
{
std::cout << x.i2 << std::endl;
}
Если вы пользуетесь компилятором от Microsoft, то вас ждёт разочарование - это не работает в MSVC++. Можно потренироваться в GNU C++ (сам проверял) и в Comeau (а вот это только по слухам).
P.S. Кстати, в качестве VERY_VERY_LONG_VALUE отлично будет смотреться Ответ на главный вопрос жизни, вселенной и всего такого ;-)