检查输入数据类型以及它是空还是空

时间:2013-08-26 14:18:16

标签: fortran

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

  1. 我想测试用户输入的值是否为实数/整数,如果不是,则在此处发出程序期望实数/整数的警告。
  2. 此外,我还想知道我们如何检查此刻的特定变量是空还是空。即我已经声明了一个变量,但如果在计算时它的值为null或为空或尚未设置,那么在这种情况下,程序不应该崩溃而是发出警告以提供正确的值。
  3. 这些操作在C ++和C#中都要容易得多,但我找不到在Fortran中这样做的方法。

1 个答案:

答案 0 :(得分:2)

我猜“null或empty”表示变量是否已初始化:“尚未设置”。 “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的工作原理(例如Long ints in Fortran)。