bcc32c 错误整数字面值太大,无法用任何整数类型表示
bcc32c Error integer literal is too large to be represented in any integer type
我有一个很大的 __int64 文字:
const __int64 PwTab[] = {
50036500600837093008i64,
3006206760097890820056i64
};
它被 bcc32
(Borland 经典编译器)很好地接受,但不被 bcc32c
(clang)接受。
clang 编译器的错误是:
integer literal is too large to be represented in any integer type
我使用 i64
后缀告诉计算机这是一个 64 位整数文字。
如何在 clang 中编写一个 __int64
文字,它也与经典编译器中的 __int64
类型兼容?
如评论中所述,问题出在 bcc32
在编译时没有报告过大的文字,而是无声地溢出,这当然会在运行时创建与预期完全不同的数组。
例如
int64_t testVar = 0x112233445566778899aai64;
这当然大于 64 位整数可以接受的值,并导致运行时值为:
0x33445566778899aa
旁注 - ll
后缀在 Borland 经典编译器中不起作用。所以我必须在其中使用 i64
。但是换成clang
.
就没有问题了
我有一个很大的 __int64 文字:
const __int64 PwTab[] = {
50036500600837093008i64,
3006206760097890820056i64
};
它被 bcc32
(Borland 经典编译器)很好地接受,但不被 bcc32c
(clang)接受。
clang 编译器的错误是:
integer literal is too large to be represented in any integer type
我使用 i64
后缀告诉计算机这是一个 64 位整数文字。
如何在 clang 中编写一个 __int64
文字,它也与经典编译器中的 __int64
类型兼容?
如评论中所述,问题出在 bcc32
在编译时没有报告过大的文字,而是无声地溢出,这当然会在运行时创建与预期完全不同的数组。
例如
int64_t testVar = 0x112233445566778899aai64;
这当然大于 64 位整数可以接受的值,并导致运行时值为:
0x33445566778899aa
旁注 - ll
后缀在 Borland 经典编译器中不起作用。所以我必须在其中使用 i64
。但是换成clang
.