Code Bye

while ((double)clock() / CLOCKS_PER_SEC – start

inline void hello()
{
cout<<“\n\n\n\t\t\t贪吃蛇游戏即将开始!”;                        //准备开始
double start;
for (int i = 3; i >= 0; i–)
{
start = (double)clock() / CLOCKS_PER_SEC;                //得到程序目前为止运行的时间
while ((double)clock() / CLOCKS_PER_SEC – start <= 1);    //经过1秒之后
if (i > 0)
{
system(“cls”);                                        //清屏
cout<<“\n\n\n\t\t\t进入倒计时:”<<i<<endl;                //倒计时
}
else
Update(map, grade, length, autotime);                //刷新地图
}
}
解决方案

40

语句执行是需要时间的。
你上面的那句start = (double)clock() / CLOCKS_PER_SEC; 记录下了当时时间点的时间
然后下面while里的(double)clock() / CLOCKS_PER_SEC得到的也是最新的时间,第一次循环它比start略大一点点点
减去start以后可能是个很小的数,(注意while后面的分号)然后继续while循环,每次while循环都是需要消耗时间的
假设进行了几百万次(消耗了1秒),就会使得(double)clock() / CLOCKS_PER_SEC-start大于1了,然后执行之后的语句

20

start = (double)clock() / CLOCKS_PER_SEC;                //得到程序目前为止运行的时间
//此时clock()函数wrap around了
while ((double)clock() / CLOCKS_PER_SEC – start <= 1);    //经过XXXXXX秒之后……

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明while ((double)clock() / CLOCKS_PER_SEC – start