gpt4 book ai didi

fortran - 初始化整数,值为 -2**31

转载 作者:行者123 更新时间:2023-12-01 22:28:03 25 4
gpt4 key购买 nike

integer, parameter :: m = -2147483648

导致编译器错误:“整数对其种类来说太大”,但是

integer, parameter :: m = -2147483647 - 1

似乎可以工作并产生正确的结果。我认为这是因为编译器在否定 2147483648 之前检查它并溢出整数类型。虽然减法 1 黑客似乎完成了所需的初始化,但是否有“最佳实践”方法可供使用?

最佳答案

问题在于 Fortran 标准根据“型号”定义整数,这些整数具有对称间隔。 GFortran(您似乎根据错误消息使用它)不允许不是 Fortran 型号的整数文字,即使二进制补码硬件可以表示此类数字。这个检查是在解析阶段完成的,因此当诸如“-huge(0) - 1”这样的表达式在稍后的编译过程中常量折叠时,不会出现错误消息。

使用 GFortran,您可以使用 -fno-range-check 禁用此检查。

关于fortran - 初始化整数,值为 -2**31,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12325343/

25 4 0
文章推荐: logstash - 将 Logstash json 消息分解为字段
文章推荐: java - WEB-INF/jsp 中包含更多文件夹的 viewResolver 在 spring 中不起作用
文章推荐: php - 如何在 Symfony2/Doctrine2 中处理大量 INSERT 以避免 "Allowed memory size of 2147483648 bytes exhausted"
文章推荐: java - 我可以使用 mapstruct 映射从 ArrayList 扩展的类吗?