【问题标题】:For loop setting variable to conditionFor循环设置变量为条件
【发布时间】:2012-11-18 23:58:59
【问题描述】:

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

这是由 Microsoft Visual Studio 6.0 Visual C++ 在 64 位 Windows Vista 计算机上编译和构建的。我已经注释掉了所有不必要的代码,但它仍然导致了这个错误。删除所有 cmets 的代码如下:

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 

感谢您的意见。

【问题讨论】:

    标签: c++ variables for-loop


    【解决方案1】:

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

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

    这意味着for循环运行,什么都不做,直到currentTrack等于totalNumberOfTracksToRun,然后才执行下面的块。这就是为什么currentTrack 似乎立即跃升至 5 的原因。

    【讨论】:

      【解决方案2】:

      你有一个流浪;

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

      这意味着for 只会增加currentTrack,直到达到totalNumberOfTracksToRun,然后再转到下一行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-27
        • 1970-01-01
        • 2014-05-05
        • 1970-01-01
        • 2021-02-16
        相关资源
        最近更新 更多