for loop to while loop + дополнительное условие - PullRequest
0 голосов
/ 21 июля 2010

У меня есть цикл, похожий на этот.

int total1, total2;
for (total1 = fsize(myfile);;) {
    total2 = fsize(myfile);
    ...
    ...
    total1 = total2;
}

Что я хотел бы сделать, это преобразовать это в цикл while и проверить наличие дополнительного условия перед завершением цикла.

Я бы хотел сделать что-то вроде этого:

while((total1 = fsize(myfile)) && input = getch() != 'Q') {
    total2 = fsize(myfile);
    ...
    total1 = total2;
}

Спасибо

Ответы [ 4 ]

0 голосов
/ 16 февраля 2016

Инициализатор в цикле for выполняется только один раз.while эквивалент

for (total1 = fsize(myfile);;) {

равен

total1 = fsize(myfile);
while (1) {

Вы упомянули добавление условия input = getch() != 'Q'.

Обратите внимание, что присвоение (=) имеет более низкий приоритет, чем сравнение (!=), поэтому для присвоения getch() input и проверки того, что символ не является Q, необходимо заключить в скобкивокруг задания:

total1 = fsize(myfile);
while ((input = getch()) != 'Q') {
0 голосов
/ 21 июля 2010

Возможно, вы имели в виду

while((total1 == fsize(myfile)) && ((input = getch()) != 'Q')) {
    total2 = fsize(myfile);
    ...
    total1 = total2;
}

Имейте в виду, эти операторы = это назначение == это сравнение

0 голосов
/ 21 июля 2010

Часть инициализации цикла for total1=fsize(myfile) стала частью условия, проверенного в цикле while.Это то, что ты намеревался ??

Ты уверен, что не хотел этого ...

total1 = fsize(myfile);

while((input = getch()) != 'Q') {
  total2 = fsize(myfile);
  ...
  total1 = total2;
}
0 голосов
/ 21 июля 2010

Вы можете использовать для:

for(total1 = fsize(myfile); (input = getch()) != 'Q';) {
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...