fortran - Fortran 能否在逻辑运算中强制遵守参数顺序?

我正在遍历索引,我正在检查我是否不在第一个循环交互和另一个条件中。如果第一个条件是 .False.,我不想评估第二个条件。

do i = 1, n
    if ( i /= 1 .and. var(i) > var(i-1) ) then
        do something
    end if
end do

很明显,在这种情况下,如果第一个条件为假,则评估第二个条件将导致索引错误。因为如果 i = 0 那么 var(i-1) 将低于下限。

如果第一个条件已经是 .False.,为什么还要计算第二个条件?有没有办法在不创建第二个 if 语句的情况下避免这种情况?

最佳答案

最简短的回答是“否”。对于显示的代码,您有两个选择

do i = 1, n
   if ( i /= 1 ) then
      if (var(i) > var(i-1) ) then
         do something
      end if
   end if
end do

do i = 2, n
   if (var(i) > var(i-1) ) then
      do something
   end if
end do

https://stackoverflow.com/questions/75312396/

相关文章:

vbscript - 当我的 InstallShield 安装程序尝试运行我的 VBS 自定义操作时

wpf - ListBox 中的 TextBox、Button 和 ListBox

sql-server - 从现有数据库生成 SQL DDL 和内容的工具

perl - Perl 包变量什么时候超出范围?

python - sys.getrefcount 继续

python - 查找给定范围内的数字,使给定列表中任何元素的数字的 gcd 始终为 1

pdf - PDF 的 BitsPerComponent 如何转换为图像的每像素位数?

sql-server-2005 - 强制 SQL Server 列为特定值

.net - .NET : System. InvalidOperationException :

c++ - 是不是 vector.at(vector.size()-1) 比 vector.back