用于循环设置变量到条件

jjl*_*jl3 1 c++ variables for-loop

我的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;
Run Code Online (Sandbox Code Playgroud)

}

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>
Run Code Online (Sandbox Code Playgroud)

输出是:

Simple Watch Region Test
-----------------------
  Enter Number of Tracks to run: 5
currentTrack starts at 0
current is 5
Press Any Key to continue 
Run Code Online (Sandbox Code Playgroud)

谢谢你的想法.

Jos*_*eld 5

你的for语句末尾有一个分号:

for( currentTrack; currentTrack < totalNumberOfTracksToRun; currentTrack++);
                                                     // get rid of this ---^
Run Code Online (Sandbox Code Playgroud)

这意味着for循环运行,什么都不做,直到currentTrack变得相等,totalNumberOfTracksToRun然后才执行以下块.这就是为什么它似乎currentTrack立即跳到5.