IF-ELSEIF 条件

使用 else,我们可以在不满足条件时执行一些任务。但是如果我们想在第一个条件是假的情况下检查第二个条件怎么办呢。我们可以这样做:

a = 9;
if mod(a,2)==0   % MOD - modulo operation, return the remainder after division of 'a' by 2
    disp('a is even')
else
    if mod(a,3)==0
        disp('3 is a divisor of a')
    end
end

OUTPUT:
3 is a divisor of a

这也称为 嵌套条件 ,但在这里我们有一个 speciel 案例,可以提高代码的可读性,并减少错误的机会 - 我们可以写:

a = 9;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
end

OUTPUT:
3 is a divisor of a

使用 elseif,我们可以在同一条件块中检查另一个表达式,这不仅限于一次尝试:

a = 25;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
elseif mod(a,5)==0
    disp('5 is a divisor of a')
end

OUTPUT:
5 is a divisor of a

选择连续使用 elseif 时应格外小心,因为只有其中一个将从 ifend 块执行。所以,在我们的例子中,如果我们想要显示 a 的所有除数(从我们明确检查的那些除数),上面的例子将不会很好:

a = 15;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
elseif mod(a,5)==0
    disp('5 is a divisor of a')
end

OUTPUT:
3 is a divisor of a

不仅是 3,而且 5 是 15 的除数,但是如果上面的任何表达式都是真的,那么检查除以 5 的部分就不会达到。

最后,我们可以在所有 elseif 条件之后添加一个 else(并且只有一个 ),以便在满足以上条件时执行代码:

a = 11;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
elseif mod(a,5)==0
    disp('5 is a divisor of a')
else
    disp('2, 3 and 5 are not divisors of a')
end

OUTPUT:
2, 3 and 5 are not divisors of a