2012-11-18 114 views
1

我for循环中的计数器变量在第一次进入循环时被设置为条件的值。我从来没有听说过这种情况发生,我在一个月前在这个系统上写了一个非常相似的代码版本,并没有这个问题。For循环设置变量条件

这是由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 

谢谢你的想法。

回答

5

你必须在你的for语句结束分号:

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

这意味着for循环运行,无所事事,直到currentTrack等于totalNumberOfTracksToRun,然后才执行下面的块。这就是为什么它看起来currentTrack也瞬间暴涨到5

4

你有一个流浪;

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

这意味着for直到它才去到下一行到达totalNumberOfTracksToRun只会增加currentTrack