Несколько решают проблему в для цикла

Почему это не допустимо

for( int i = 0, int x = 0; some condition; ++i, ++x )

и это

int i, x;
for( i = 0, x = 0; some condition; ++i, ++x )

Спасибо

22
задан Thomas 26 February 2010 в 07:27
поделиться

6 ответов

когда вам нужно объявить две переменные разных типов, это невозможно сделать одним объявлением

Hackety hack hack:

for (struct {int i; char c;} loop = {0, 'a'}; loop.i < 26; ++loop.i, ++loop.c)
{
    std::cout << loop.c << '\n';
}

; - )

37
ответ дан 29 November 2019 в 03:23
поделиться

это работает:

for( int i = 0, x = 0; some condition; ++i, ++x )

это похоже на объявление переменной:

int i, j; // correct
int i, int j; // wrong, must not repeat type
33
ответ дан 29 November 2019 в 03:23
поделиться

Поскольку объявление переменной (например, int x ) не является выражением, а оператор запятой (, ) объединяет только выражения.

-121--1634095-

В таблицу можно добавить «пустое» представление заголовка... это придаст начальному виду таблицы смещение, но после начала прокрутки смещение исчезнет. Не уверен, что это то, чего ты хочешь.

Если вы нуждаетесь в постоянном смещении и еще не используете заголовки разделов, то вы можете создать смещение аналогично приведенному выше, создав пользовательские виды для заголовков разделов, особенно если у вас есть только один раздел, это может дать вам вид постоянного смещения.

Я могу опубликовать образец кода, если он звучит так, будто вы ищете любой из них.

-121--818084-

Почему он должен быть действительным? Это синтаксически бессмысленная конструкция. Что вы пытались с ним сказать?

Первая часть для заголовка - это объявление.

int i = 0, int x = 0

не является допустимым объявлением. Он не будет компилироваться в для по той же причине, по которой он не будет компилироваться в другом месте программы

int i = 0, int x = 0; // Syntax error

Когда необходимо объявить два объекта типа int в одном объявлении, вы делаете это следующим образом

int i = 0, x = 0; // OK

То же самое можно использовать в для

for( int i = 0, x = 0; some condition; ++i, ++x )  

(Но когда нужно объявить две переменные различных типов, это не может быть сделано одним объявлением и, следовательно, обе не могут быть объявлены в для одновременно. По крайней мере один из них должен быть объявлен до для .)

8
ответ дан 29 November 2019 в 03:23
поделиться

Правильная версия:

for (int i = 0, x = 0; some condition; ++i, ++x)
7
ответ дан 29 November 2019 в 03:23
поделиться

Это допустимо:

    for(int i = 0, x = 0; condition; ++i, ++x );

int x, int y не является допустимым способом объявления переменных;

3
ответ дан 29 November 2019 в 03:23
поделиться

Поскольку объявление переменной (например, int x ) не является выражением и оператором запятой (, ) только сочетает выражения.

3
ответ дан 29 November 2019 в 03:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: