在C语言中,当进行数值运算时,不同类型的变量会进行自动类型转换。然而,这种转换可能导致精度损失。例如,当两个大的unsigned long long数值相加时,如果结果超出了该类型的最大表示范围,将发生溢出,如9223372036854775808 + 9223372036854775808的结果18446744073709551616就是一个超出范围的例子,体现了类型转换带来的问题。
C语言运算时类型自动转换及精度损失问题#include<stdio.h>#include<math.h>int main(){ unsigned long long a=0; int i; for(i=0;i<64;i++){ a+=pow(2,i); } unsigned long long b=a/25000; printf("%llu\n",a); printf("%llu",b); ret