参数类型问题
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)
是实数。
为什么会出现以下错误
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)
是实数。