这个IF语句是否嵌套?

use*_*638 1 nested pseudocode

输入X:

if (0 <= X and X < 49)
    output "abc"
else if (50 <= X and X < 70)
    output "def"
else if (70 <= X and X < 85)
    output "ghi"
else if (85 <= X and X < 100)
    output "jkl"
endif
Run Code Online (Sandbox Code Playgroud)

Tur*_*nor 8

你可以认为它在逻辑上等同于以下内容:

if(a) {
    // code
} else {
    if(b) {
        // code
    } else {
        // code
    }
}
Run Code Online (Sandbox Code Playgroud)

所以在这方面,你可以称之为嵌套.在C和类似的语言中,这正是它的工作原理,因为没有"elseif"语句可用.花括号是可选的,我只是将它们包括在内以使它更清晰.


GMa*_*ckG 5

它们是嵌套的,但格式不同.

您的代码与以下内容相同:

if (0 <= X and X < 49)
    output "abc"
else
    if (50 <= X and X < 70)
        output "def"
    else
        if (70 <= X and X < 85)
            output "ghi"
        else
            if (85 <= X and X < 100)
                output "jkl"
            endif
        endif
    endif
endif
Run Code Online (Sandbox Code Playgroud)

这不是嵌套的:

if (0 <= X and X < 49)
    output "abc"
endif
if (50 <= X and X < 70)
    output "def"
endif
if (70 <= X and X < 85)
    output "ghi"
endif
if (85 <= X and X < 100)
    output "jkl"
endif
Run Code Online (Sandbox Code Playgroud)

这在所有具有if语句的语言中都有效(忽略使用{}而不是endif之类的东西)

但是,有些语言有一个实际的"elseif"(或"elif")命令,在这种情况下你不会嵌套,而是写成"else if",你可以假设它只是一个不同格式的嵌套.