这是因为 long 和 double 的表示范围不同, 表达式是先计算 c*789,c 是 long int 类型, 789编译器默认使用 int 的类型,long int * int, 结果结果会用 long int 类型的编译器中间变量来存储, 这个结果再赋值给 double 类型变量 f, 溢出是在计算 466438237*789 时发生的表达式 (double)c*789 在编译器中, c 是 long int 类型, 789 编译器默认使用 int 的类型,但是在计算之前会经过 double 强制转化, 所以是 double * int, 结果会用 double 类型的编译器中间变量来存储, 之后将这个值赋值给 dou...
|