gcc类型转换很奇怪的有关问题

gcc类型转换很奇怪的问题
一个double,转换成64位的long long int,数值竟然不一样,源码:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
  double f=-77059200780;
  long long int i=(long long int)f;
  printf("%lf\n",f);
  printf("%ld\n",i);
}

结果:
-77059200780.000000
250210548

难道long long int的数值范围比double还小?为什么会这样,正确的i应该是-77059200780才对啊。谢谢高手指点!

------解决方案--------------------
试试 printf("%lld\n",i); 呢。
------解决方案--------------------
引用:
试试 printf("%lld\n",i); 呢。


gcc类型转换很奇怪的有关问题