返回信息流写了个简单的延时程序,如下:
void DelaySeconds(int n)
{
clock_t start = clock();
clock_t end = start;
while (static_cast<double>(end - start) / CLOCKS_PER_SEC < n) {
end = clock();
printf("%ld\n", end - start);
}
}
int main()
{
clock_t start = clock();
DelaySeconds(5);
clock_t end = clock();
printf("%f", static_cast<double>(end - start) / CLOCKS_PER_SEC);
return 0;
}
程序就一直在打印,跑了6分钟左右才停,一直打印到5000000。
但调用clock()显示DelaySeconds(5)只跑了5s。
网上搜了一下,没找到想要的,大家知道为啥不?
这是一条镜像帖。来源:北邮人论坛 / cpp / #80833同步于 2014/7/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于printf
xiaobing307
2014/7/17镜像同步31 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
#include <stdio.h>
#include <unistd.h>
int main() {
printf("Good nignt...\n");
sleep(5);
printf("Good morning!\n");
return 0;
}
水平比较菜。。。
我想知道加了printf后,5s之后为啥不会停呢,跑了好久都不停,代码不是一句一句执行的么
【 在 FromSixToTen 的大作中提到: 】
: 不知道你要干嘛,延时方式有多种,为嘛选择这一种,另外printf是低速设备,比较浪费时间的.
好方法!怎么没想到sleep呢。。。
为啥加了printf后,程序5s之后不会停呢,跑了好久都不停,代码不是一句一句执行的么
【 在 nuanyangyang 的大作中提到: 】
: [code=c]
: #include <stdio.h>
: #include <unistd.h>
: ...................
我跑了这个程序 打印到5000 就停了 很正确啊
win32下 那个宏就是1000 刚好5秒嘛
【 在 xiaobing307 (小兵) 的大作中提到: 】
: 写了个简单的延时程序,如下:
: void DelaySeconds(int n)
: {
: ...................
【 在 xiaobing307 的大作中提到: 】
: 写了个简单的延时程序,如下:
: void DelaySeconds(int n)
: {
: ...................
我在linux下跑的,宏是1000000,应该没啥区别吧。
注释掉printf,时间基本是对的。
加上printf后,我等了几分钟,还在跑。。。
【 在 wangxiaobupt 的大作中提到: 】
: 我跑了这个程序 打印到5000 就停了 很正确啊
: win32下 那个宏就是1000 刚好5秒嘛
:
应该没啥区别 只是精度问题吧
【 在 xiaobing307 (小兵) 的大作中提到: 】
: 我在linux下跑的,宏是1000000,应该没啥区别吧。
: 注释掉printf,时间基本是对的。
: 我等了几分钟,还在跑。。。
: ...................
【 在 xiaobing307 的大作中提到: 】
: 我在linux下跑的,宏是1000000,应该没啥区别吧。
: 注释掉printf,时间基本是对的。
: 加上printf后,我等了几分钟,还在跑。。。
哪个Linux版本?