参数类型问题

Argument Type Problems

为什么会出现以下错误

  d = Atan ( 1_Real32 / 110443_Real32 )
             1
Error: 'x' argument of 'atan' intrinsic at (1) must 
be REAL or COMPLEX

有趣的是,我在使用

时没有遇到任何问题
d = Atan ( Real(1,Real32) / Real(110443,Real32) )

1_Real32 是一个 int-literal-constant (R407, Fortran2008 4.4.2.2 5)。

要获得实际值,您需要将其更改为 1._Real32。小数点的存在使其成为 实数常量 (R413, Fortran2008 4.4.2.3 6).

请记住,您代码中的 Real32 只是一个数字,例如4 并且它只指定一种,而不是类型,例如1_4 是第 4 类整数,1._4 是第 4 类实数。

您不会在第二个示例中遇到错误,因为内在 real() 总是 returns 实数值,包括在提供整数作为其第一个参数时。

非常正确,但在回答问题时明确说明一件事可能是值得的。

内在函数 real 接受整数参数和 returns 默认或指定类型的实数。而 1_real32 是整数(如果 real32 是整数的有效种类数) real(1, real32) 是实数。