【发布时间】:2015-11-26 23:33:22
【问题描述】:
当我尝试从 double 到 unsigned long 进行隐式强制转换时,出现溢出警告:“警告:隐式常量转换中的溢出 [-Woverflow]”。
说明如下:
unsigned long ulongMax = pow(2.0, 64.0) - 1;
但是当我像下面这样明确地投射时,没关系!
unsigned long ulongMax = (unsigned long) (pow(2.0, 64.0) - 1);
我不明白为什么我会收到警告,结果 (18446744073709551615) 与标题“limits.h”中的ULONG_MAX 相同。
【问题讨论】:
-
您的问题应该包含确切的警告信息,并且最好确认 ulong 的大小,例如
printf("%lu\n", ULONG_MAX); -
我已经包含了警告信息。在我的系统(Arch linux 64bits)上,ULONG_MAX 值为 18446744073709551615,正如我所说。
标签: c casting double integer-overflow