gpt4 book ai didi

c - 为什么我在获取时间戳时得到负值?

转载 作者:太空宇宙 更新时间:2023-11-04 11:09:51 26 4
gpt4 key购买 nike

Uint64_t a;
Uint32 b;

a= clock_cycles();
b= uint32((a*1000000)/(SYSPAGE_ENTRY(qtime)->cycles_per_sec));
printf("RECEIVE from Time in microseconds: %ld\n", b);

我创建了变量并获取时间戳并将其转换为 uint32,如上面的代码所示。

如果我打印 b 值,那么我得到的是负值!!这样做有什么问题吗??

最佳答案

你的 b 大于 2^31。 Printf 格式“%ld”表示您要打印一个带符号的整数,并且 printf 将最高位的数字解释为负整数。使用“%lu”而不是“%ld”。

此外,在查看您的代码时,a*1000000 的数值很可能溢出超过最大可能值。对于您的情况,我建议使用另一个函数来获取微秒时间,例如 gettimeofday 并将结果存储在 64 位整数中。

关于c - 为什么我在获取时间戳时得到负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23693707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com