在内核中:我正在读取时间值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
。