所以基本上似乎GNU Prolog在我的32位x86 Linux上使用28位整数。
以下代码无法编译:
foo(A) :-
A0 is 0xdeadbeef,
A1 is A0 >> 8,
A2 is A0 >> 16,
A3 is A0 >> 24.
然后我对以下两种典型情况感到困惑:
答案 0 :(得分:2)
GNU Prolog使用有界整数,其边界取决于体系结构(32/64位)。您可以通过(在64位上)知道这些限制:
| ?- current_prolog_flag(min_integer,X).
X = -1152921504606846976
yes
| ?- current_prolog_flag(max_integer,X).
X = 1152921504606846975
是
存储更大整数的解决方法是将它们分成两部分,例如使用Prolog结构来记录它们。