我想编写一个程序,检查X,Y和Z值的变化是否在5秒内超过10的差值,应该调用initialValues()函数。
我编写了以下程序,但在运行时崩溃,程序无法运行。然后我必须强行关闭程序。
下面的是我的计时器程序的主要部分。删除此特定部分后,我的程序不会崩溃。
我该如何解决这个问题?
while(X<=X+10 || X>=X-10 && Y<=Y+10 || Y>=Y-10 && Z<=Z+10 || Z>=Z-10)
{
clock_t t;
t = clock();
t = clock()-t;
float timer = t/CLOCKS_PER_SEC;
if(timer==5)
{
initialValues(X,Y,Z);
cout<<"X = "<<initialX<<" Y = "<<initialY<<" Z = "<<initialZ<<endl;
}
}
答案 0 :(得分:1)
你没有说出函数initialValues的作用,所以我们无法知道那里是否有狡猾的东西。 但是,你似乎有一个无限循环。检查while循环中的条件,并将括号插入到应该一起评估的单独条件中,例如,对于exmaple:
while( ( X<=X+10 || X>=X-10 ) && ( Y<=Y+10 || Y>=Y-10 ) && ( Z<=Z+10 || Z>=Z-10) )
请注意额外的括号。
特别是,您应该按照其他用户的建议检查您指定的条件是否始终为真。在我看来,X <= X + 10总是,同样适用于其他条件。