c程序中的转换错误从s64翻倍?

在内核中:我正在读取时间值types为extern s64 Latency;

在用户空间中:

 extern double latency; //fp is reading the kernel value (ie Latency) fscanf (fp,"%lf", latency); 

如果我从内核读取s64作为用户空间的双倍。 有数据丢失的可能性? 我应该使用哪种数据types来获取完整的值?

简短的回答:是的,肯定会有数据丢失。

想想看,这是一个有符号的64位整数( s64 ),一个double有64位的存储空间。 但是s64只关心整数, double也可以表示分数。 要做到这一点,需要利用这些信息的一些位,所以它也不能代表整个64位整数范围。

你应该从工具链的stdint.h使用int64_t