- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
关于 clock()
生成的时钟滴答计数的问题来自 <ctime>
. (clock()
的用法包含在其他 questions 中)
在我的系统上 clock_t
是 long
的别名其最大值根据我的编译器 <climits>
是 2147483647。
clock_t delay = clock_t(10) * CLOCKS_PER_SEC;
clock_t start = clock();
while(clock() - start < delay); //Note Semi-colon here makes this null statement
std::cout << clock();
运行这个我得到大约 10060。这与 CLOCKS_PER_SEC
一致正在#define
d(对于我的系统)为 1000。
所以如果有 1000 CLOCKS_PER_SEC
然后是 2147483647/1000 = 2147483.647 秒,大约需要 24-25 天。
我不确定它是否实际上是由 C++ 定义的行为,但我注意到超过 long
的常见行为limit 是绕到负端。
例如,
long m = long(2147483647);
std::cout << ++m << std::endl;
将输出:-2147483648
所以假设程序在初始化之前已经运行了很长时间start
, 和 start
碰巧被初始化为 2147483647(最大可能的 long
值)。
在这一点上,我假设我们将开始包装 clock()
返回的值所以当我们再次接近 2147483647 时,得到诸如 -2147482649 的值。所以现在我的原始代码可能需要很长时间才能完成循环,比预期的延迟时间长得多。
是实际行为吗?这种风格的暂停是否应该只用于延迟小于一定数量的情况?是否应该进行其他检查以使其“安全”?
最佳答案
当你溢出一个带符号的整数类型时会发生什么是实现定义,并且可能是一个信号。是的,这意味着 clock()
可以仅在流程开始后的固定时间内使用,并且可能只有在实现确保第一次调用时将始终返回 0(我所知道的所有实现的情况)。
关于c++ - 处理来自 std::clock() 的 clock_t 溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11936951/
我正在尝试在我的 C 程序中进行一些基本计时。基本上我想在定义的时间段内每秒翻转几次。我的问题是除法似乎不能与变量一起正常工作clock_t 类型。 这是一个显示问题的最小程序,我用两个都测试过GCC
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
这个问题已经有答案了: How to correctly use the extern keyword in C (10 个回答) 已关闭 6 年前。 所以我有 3 个文件; main.c , fil
我使用此代码来测量我的 C 程序的计算时间: clock_t start = clock() ; do_some_work() ; clock_t end = clock() ; double ela
我很难弄清楚我的代码有什么问题。编译器不断获取函数的隐式声明 'clock'[ -Wimpliciit-fucntion-declaration] clock_t start = clock(); 和
希望这是一个简单的问题和一个简单的答案。代码是用C编写的。我正在使用带有 XC8 编译器的 MPLAB IDE v1.60,但它无法识别“clock_t”。我为 PIC18F6520 设备设置了 MP
这个问题在这里已经有了答案: What's the relationship between the real CPU frequency and the clock_t in C? (3 个答案)
这是我在 WIndows 中使用的: #include #include int main( void ) { using namespace std; clock_t lastT
我有以下代码: #include #include clock_t a; void f(void) { a = clock(); printf("in f(): %g\n", a)
我正在尝试使用我自己创建的计时器库,它在其中使用了 clock_t。当我编译草图时,我不断出错。这是我不断收到的错误 error: 'clock_t' in namespace 'std' does
我实际上能够找出我的程序出了什么问题。 我可以通过添加如下行来破坏程序: clock_t a_clock; 我给这个变量命名什么并不重要,重要的是它是clock_t类型,并且我声明了它。 我不一定要给
我正在尝试计算我的应用程序的一部分的执行时间,但由于我需要获得毫秒数,而且我也需要获得较长的执行时间。我目前正在使用 ctime 的 clock_t = clock(),但我认为它的范围只有 72 分
我想在几秒钟内的某个时间执行 2 个不同的输出,一个接一个。并使用 keyEvent 更改交换时间。这是想法。 [Every 10 seconds] 1 2 3 4 5 6 7 8 9 (10) 11
我目前正在使用显式转换为 unsigned long long 并使用 %llu 打印它,但是因为 size_t 有 %z 说明符,为什么 clock_t 没有? 它甚至没有宏。也许我可以假设在 x6
关于 clock() 生成的时钟滴答计数的问题来自 . (clock() 的用法包含在其他 questions 中) 在我的系统上 clock_t是 long 的别名其最大值根据我的编译器 是 21
clock_t、time_t和struct tm有什么区别? struct tm 看起来像这样: struct tm{ int tm_sec; int tm_min; int tm_hour; int
我在 VS 2010 中使用 boost 1_53 进行编译。我也在使用 boost 的线程。 在编译过程中我遇到了一堆这样的错误 c:\program files (x86)\microsoft v
我只是编写了一个 C 程序,每隔一秒打印一次整数值作为练习,该程序在等待一秒后打印整数,然后再打印下一个整数,因此程序需要 5 秒才能完成执行。我正在使用 clock_t 和 time() 作为计时器
我正在试用 图书馆以获得类型感,clock_t , clock()函数和常数,CLOCKS_PER_SEC .我注意到我必须同时命名空间 clock_t和 clock()与 std::但不是 CLOC
我是一名优秀的程序员,十分优秀!