Для контура, устанавливающего переменную в условие

Переменная counter в цикле my устанавливается в значение условия при первом входе в цикл. Я никогда не слышал об этом, я написал очень похожую версию этого кода месяц назад или около того в этой же системе, и у меня не было этой проблемы.

Это компилируется и собирается Microsoft Visual Studio 6.0 Visual C ++ на 64-битном компьютере с Windows Vista. Я закомментировал весь мой ненужный код, и он все еще вызывал эту ошибку. Код с удаленными комментариями приведен ниже:

main.cpp:

#include "stdafx.h"
using namespace std;

int main(int argc, char* argv[])
{

cout<<"Simple Watch Region Test\n";
cout<<"-----------------------\n";

//get number of tracks
cout<<"  Enter Number of Tracks to Run: ";
unsigned int totalNumberOfTracksToRun;
cin>>totalNumberOfTracksToRun;

unsigned short currentTrack = 0;
cout<<"currentTrack starts at "<<currentTrack<<endl;

for( currentTrack; currentTrack < totalNumberOfTracksToRun; currentTrack++);
{

cout<<"current is "<<currentTrack<<endl;

}

return 0;

}

stdafx.h:

#if !defined(AFX_STDAFX_H__9455C912_1697_486F_A680_AAE1D0B22611__INCLUDED_)
#define AFX_STDAFX_H__9455C912_1697_486F_A680_AAE1D0B22611__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <iostream>
#include <fstream>
#include <math.h>
#include <string>

И вывод:

Simple Watch Region Test
-----------------------
Enter Number of Tracks to run: 5
currentTrack starts at 0
current is 5
Press Any Key to continue

Спасибо за ваши мысли.

1

Решение

У вас есть точка с запятой в конце вашего заявления:

for( currentTrack; currentTrack < totalNumberOfTracksToRun; currentTrack++);
// get rid of this ---^

Это означает, что цикл запускается, ничего не делая, пока currentTrack становится равным totalNumberOfTracksToRun и только тогда выполняется следующий блок. Вот почему кажется, что currentTrack мгновенно прыгнул до 5.

5

Другие решения

У вас есть шальные ;:

for( currentTrack; currentTrack < totalNumberOfTracksToRun; currentTrack++);
//                                                                         |
//                                                                       here

что означает for только увеличивается currentTrack пока не достигнет totalNumberOfTracksToRun прежде чем перейти к следующим строкам.

4

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector