前幾天做資料處理的時候發現出現一部分0值,排查后發現用(int)取整后部分數值有誤,遂做了以下測驗
#include <stdio.h>
int main()
{
int i,res4,res5;
float td1,fd1,res1,res2,res3;
td1=1.0/10;
fd1=1.0/1024;
i=274645;
res1=i*td1/fd1;
res2=(int)(res1)+1;
res3=(int)(res1+1);
res4=(int)(res1)+1;
res5=(int)(res1+1);
printf("%f %f %f %d %d\n",res1,res2,res3,res4,res5);
return 0;
}
輸出結果 28123648.000000 28123648.000000 28123648.000000 28123649 28123648
這就非常的奇怪了,其中的多個+1在資料型別轉換之下就像失效了一樣,不太明白是為什么。
編輯器VS Code,編譯器GCC 8.1.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/203977.html
標籤:C語言
上一篇:C語言
