Переменная 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
Спасибо за ваши мысли.
У вас есть точка с запятой в конце вашего заявления:
for( currentTrack; currentTrack < totalNumberOfTracksToRun; currentTrack++);
// get rid of this ---^
Это означает, что цикл запускается, ничего не делая, пока currentTrack
становится равным totalNumberOfTracksToRun
и только тогда выполняется следующий блок. Вот почему кажется, что currentTrack
мгновенно прыгнул до 5.
У вас есть шальные ;
:
for( currentTrack; currentTrack < totalNumberOfTracksToRun; currentTrack++);
// |
// here
что означает for
только увеличивается currentTrack
пока не достигнет totalNumberOfTracksToRun
прежде чем перейти к следующим строкам.