2

我要求用户在运行时给出一个值来进行一些计算。

  1. 我想测试用户输入的值是否是实数/整数,如果不是,则发出警告,表明程序在这里需要实数/整数。
  2. 此外,我还想知道我们如何检查当前特定变量是否为空或为空。即我已经声明了一个变量,但是如果在计算时它的值为空或空或尚未设置,在这种情况下,程序不应该崩溃,而是给出警告以提供正确的值。

这两种操作在 C++ 和 C# 中都容易得多,但我在 Fortran 中找不到这样做的方法。

4

1 回答 1

3

我猜“空或空”是指变量是否已初始化:“尚未设置”。“null”对于 Fortran 指针变量具有特殊含义,但我想这不是你的问题。Fortran 在有意初始化变量之前不会自动为变量赋予特殊值,因此没有简单的方法来检查变量是否已初始化。一种方法是使用特殊值初始化变量的声明。这意味着您需要知道它在程序运行中永远不会获得的特殊值。一种可能性是使用huge内在函数:

program TestVar

   real :: AVar = huge (1.0)

   if ( AVar < huge (1.0) ) then
      write (*, *) "Test 1: Good"
   else
      write (*, *) "Test 1: Bad"
   end if

   AVar = 2.2

   if ( AVar < huge (1.0) ) then
      write (*, *) "Test 2: Good"
   else
      write (*, *) "Test 2: Bad"
   end if

end program TestVar

正如@arbautjc 警告的那样,即使在子例程中,这也只能工作一次。在一个过程中,带有声明的初始化只在第一次调用时完成。此外,如果您更改此示例中的变量类型,请务必了解其huge工作原理(例如,Fortran 中的 Long ints)。

于 2013-08-26T16:31:26.490 回答