项目场景:
volatile uint64_t et = 0;
for(et = 0;et<100;)
{
readsize = read(timerfd, &expiretimes, sizeof(uint64_t));
if(readsize<sizeof(uint64_t))
{
exitwithMsg("I/O error!");
}
//getnow();
printf("et:%llu\n", et);
et +=expiretimes;
cout<<"expiretimes["<<et<<"] readexpires:"<<expiretimes<<endl;
}
问题描述:
刚开始et定义为int类型,et值总为0.。控制台输出不正确
原因分析:
uint64_t 数据类型转换为int 数据精度丢失,发生错误
解决方案:
将et定义为uint64_t类型