这个if
语句是奥克塔夫的决策语句。有三种基本形式if
语句最简单的形式是这样的:
if (condition) then-body endif
condition是一个表达式,用于控制语句的其余部分将执行的操作then-body仅当condition是真的。
中的条件if
若该语句的值为非零,则该语句被视为true;若该语句为零,则为false。如果条件表达式的值在if
语句是向量或amatrix,只有当它不是空的并且全部的的元素为非零。概念上等效的代码condition是一个矩阵,如下所示。
if (matrix) ≡ if (all (matrix(:)))
if语句的第二种形式如下:
if (condition) then-body else else-body endif
如果condition是真的,then-body被执行;否则else-body执行。
以下是一个示例:
if (rem (x, 2) == 0) printf ("x is even\n"); else printf ("x is odd\n"); endif
在本例中,如果表达式rem (x, 2) == 0
为true(即的值x
可被2整除),则第一个printf
语句,否则第二个printf
语句进行评估。
的第三种也是最普遍的形式if
语句允许将多个决策组合在一个语句中。看起来是这样的:
if (condition) then-body elseif (condition) elseif-body else else-body endif
任意数量的elseif
子句可能会出现。依次测试每个条件,如果其中一个条件为真,则其对应的条件body执行。如果没有一个条件为真,并且else
条款存在,则其正文已执行。只有一个else
子句可能出现,而且必须是语句的最后一部分。
在以下示例中,如果第一个条件为true(即的值x
可被2整除),则第一个printf
语句被执行。如果为false,则测试第二个条件,如果为true(即的值x
可被3整除),则第二个printf
语句被执行。否则,第三个printf
语句。
if (rem (x, 2) == 0) printf ("x is even\n"); elseif (rem (x, 3) == 0) printf ("x is odd and divisible by 3\n"); else printf ("x is odd\n"); endif
请注意elseif
关键字不能拼写else if
,这在Fortran中是允许的。如果是,则else
和if
会告诉Octave把这个当作新的if
另一个中的语句if
语句的else
条款例如,如果你写
if (c1) body-1 else if (c2) body-2 endif
Octave将期望额外的输入来完成第一个if
语句如果您以交互方式使用“八度体”,它将继续提示您进行其他输入。如果Octave正在从文件中读取此输入,它可能会抱怨丢失或不匹配end
语句,或者,如果您没有使用更具体的end
语句(endif
,endfor
等),它可能只是返回不正确的结果,而不返回任何警告消息。
如果我们重写上面的语句,就会更容易看到错误,
if (c1) body-1 else if (c2) body-2 endif
使用缩进显示Octave如何对语句进行分组。详见函数和脚本.
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2