为什么我的循环只执行一次?

时间:2011-11-28 17:59:33

标签: c++ while-loop

#include <iostream>
#include <windows.h>
using namespace std;


int go_to(int x, int y)
{
  COORD c;
  c.X = x - 1;
  c.Y = y - 1;

  return  SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}

void main(){
  int a=1;

  while(a<10){
    a++;
    cout<<"work"<<endl;
    go_to(3,6);
    cout<<"work"<<endl;
  }
}

我不明白为什么这个循环只工作一次,也许你知道哪里有问题? 我问题是在Cord中,但是不知道使用CORD的类似方法。

4 个答案:

答案 0 :(得分:6)

变量a仅由a++;行修改,其值增加1,并且不会传递到go_to(x,y),因此它不会受到该函数的影响。

您的循环肯定会运行值a = {1到9},每次调用go_to(3, 6),并且还打印两次。如果你不这么认为,我相信你错了。

答案 1 :(得分:2)

你的循环在每次迭代中都做同样的事情,所以你根本不能告诉它运行很多(9)次。

答案 2 :(得分:2)

更改

while(a<10){ 
   a++; 
   cout<<"work"<<endl; 
   go_to(3,6); 
   cout<<"work"<<endl; 
} 

while(a<10){ 
   a++; 
   cout<<"work"<<endl; 
   go_to(a,a*2); 
   cout<<"work"<<endl; 
} 

你会发现它实际上已经多次运行了。

答案 3 :(得分:0)

这些值永远不会改变。

while(a<10){
    a++;
    cout<<"work"<<endl;
    go_to(3,6);
    cout<<"work"<<endl;
  }

而不是这样,尝试这样的事情:

for(int a = 0; a < 10; a++{
        cout<<"work"<<endl;
        go_to(a + 3,a + 6);
        cout<<"work"<<endl;
      }

这样你的价值实际上会改变