【发布时间】:2020-09-07 08:23:28
【问题描述】:
这快把我逼疯了。我有一个代码在使用除法时输出一个奇怪的值:
#define NANOSECONDS_PER_SECOND 1000000000
uint64 CurrentTimeInNanoSecs;
uint64 GetTimeInNanoSecs( )
{
printf("\n%X", (CurrentTimeInNanoSecs >> 32) );
printf("\n%X", (CurrentTimeInNanoSecs & 0xFFFFFFFF) );
return ( CurrentTimeInNanoSecs );
}
void GetCurrentTimeInSecs()
{
uint32 Time = GetTimeInNanoSecs() / NANOSECONDS_PER_SECOND;
printf("%X", time);
}
void main()
{
GetCurrentTimeInSecs();
}
在初始化时,我看到打印如下: 0x00000000 0x3016DC6B 0x00000198
我不确定发生了什么。有人可以帮忙吗?
【问题讨论】:
-
能否请edit 将您的问题包含在minimal reproducible example 中?如果需要,硬编码值,但请尝试确保它确实复制了您遇到的问题(并且还包括您检查值的方式)。
-
你记得在调用之前声明
GetTimeInNanoSecs吗?发布的代码没有显示它。如果不声明它,你应该得到一个警告,当然它不会起作用,因为它会隐式地将返回类型视为int。 -
从这个乱七八糟的伪代码中根本无法分辨出任何东西...请发布有效的 C 代码。
-
从 C 编译器的角度来看,至少有两个看起来很奇怪的结构。返回值数据类型
func(来自不返回任何内容的函数)和奇怪的类似注释的--- this is a...。在这种情况下,回答过于基于猜测和假设。请接受 Somes 的提示并使用 MRE 证明您的问题。 -
更新了问题。我为之前的乱码道歉
标签: c c-preprocessor integer-division unsigned-integer