【发布时间】:2011-04-09 10:49:22
【问题描述】:
当我在 32 位系统上编译以下代码时,它会产生警告:
1087: warning: integer constant is too large for "long" type;我该如何解决这个问题,这样我就不会收到该警告并且它在 32 位上正常工作?
对此的有效输入是:
unsigned char str[] = "\x00\x17\x7c\x3a\x67\x4e\xcb\x01";
mypow 函数返回 unsigned long long。
unsigned long long high, low, nano;
high = // line 1087
(str[7]&0xff) * mypow(2,56) +
(str[6]&0xff) * mypow(2,48) +
(str[5]&0xff) * mypow(2,40) +
(str[4]&0xff) * mypow(2, 32);
low =
(str[3]&0xff) * mypow(2,24) +
(str[2]&0xff) * mypow(2,16) +
(str[1]&0xff) * mypow(2,8) +
(str[0]&0xff);
nano = ((high + low)/10000000) - (unsigned long long)11644473600;
return localtime((time_t*)&nano);
【问题讨论】:
标签: c 32bit-64bit