Programming languages if/else和if/elseif
如果我有这样一个语句块:Programming languages if/else和if/elseif,programming-languages,syntax,if-statement,Programming Languages,Syntax,If Statement,如果我有这样一个语句块: if (/*condition here*/){ } else{ } a / \ X b / \ Y c / \ Z 0 (a--b--c) / / / \ X Y Z 0 或者像这样: if (/*condition here*/) else if (/*condition here*/) {} else if (/*condition here*/) {} 有什么区别
if (/*condition here*/){ }
else{ }
a
/ \
X b
/ \
Y c
/ \
Z 0
(a--b--c)
/ / / \
X Y Z 0
或者像这样:
if (/*condition here*/)
else if (/*condition here*/) {}
else if (/*condition here*/) {}
有什么区别
似乎使用if/else时,if部分用于true状态,而else部分用于所有其他可能的选项(false)。else if在许多情况下都很有用。这是我的理解,还有什么我应该知道的吗?
else if
基本上是指的else
部分if
是另一个if
语句。给定一个变量,您将使用简单的if else
结构。当存在多个变量且针对不同的可能性有不同的执行路径时,将使用if-else if-…-else
。注意,后者也以一个else
语句结束。情况a:
if( condition )
{
}
else
{
}
当上述语句中的条件为false时,将始终执行else块中的语句
情况b:
if( condition )
{
}
else if( condition2 )
{
}
else
{
}
当“condition”为false时,else if块中的语句将仅在condition2为true时执行。
当条件2为false时,将执行else块中的语句。如果没有“elseif”语法,则必须编写chain if语句,以便以这种方式处理几种可能的结果之一:
if( str == "string1" ) {
//handle first case
} else {
if( str == "string2" ) {
//handle second case
} else {
if( str == "string3" ) {
//handle third case
} else {
//default case
}
}
}
相反,你可以写作
if( str == "string1" ) {
//handle first case
} else if( str == "string2" ) {
//handle second case
} else if( str == "string3" ) {
//handle third case
} else {
//default case
}
与上一个完全相同,但看起来更好,更容易阅读。您已经自己给出了答案。if/else表示真/假结果,比如int=2或任何其他可能的int值,if/elseif表示两个以上的结果,比如int=2和int=3,依此类推 它还对变量的上下文进行分组。你可以像这样检查每一个结果
if (a == 2) { do one thing };
if (a == 3) { do another thing };
...
if (a != 2 && a != 3 ...) { do something else };
如果使用if/else/elseif,可读性会更好。许多语言都有这样的语法(这里:,所以JavaScript): IfStatement:
如果(
表达式)
语句否则
语句如果(
表达式)
语句
声明:块
可变语句
清空状态
表达陈述
IfStatement
迭代语句
持续陈述
断开语句
返回语句
带声明
标签状态
切换语句
喉道
幽会 块:
{
语句列表选项}
语句列表:声明
语句列表语句 因此,ifStatement的分支可能包含一个语句块(block)或一个其他语句(block除外)。这意味着这是有效的:
if (expr)
someStatement;
else
otherStatement;
由于StatementList可能只包含一条语句,因此这些示例与前面的示例相同:
if (expr) {
someStatement;
} else {
otherStatement;
}
if (expr)
someStatement;
else {
otherStatement;
}
if (expr) {
someStatement;
} else
otherStatement;
当我们用另一个IfStatement替换otherStatement
时,我们得到:
if (expr) {
someStatement;
} else
if (expr) {
someOtherStatement;
}
剩下的只是代码格式:
if (expr) {
someStatement;
} else if (expr) {
someOtherStatement;
}
强调秋葵的话 此外,如果一种语言有一个真正的elif/elsif/elseif(比如,一个“真正的”elseif指令,而不是一种通过格式化隐藏起来的嵌套链接),那么编译器可以很容易地在抽象语法树(或类似的,请参阅)中发出一个节点,而不是嵌套它们 举个例子: 在C/C++中,假设您有:
if (a) {
X
} else if (b) {
Y
} else if (c) {
Z
} else {
0
}
然后编译器将构建如下所示的AST节点:
if (/*condition here*/){ }
else{ }
a
/ \
X b
/ \
Y c
/ \
Z 0
(a--b--c)
/ / / \
X Y Z 0
但是如果选择的语言有一个真正的if-else:
if (a) {
X
} elif (b) {
Y
} elif (c) {
Z
} else {
0
}
然后AST可以更容易地如下所示:
if (/*condition here*/){ }
else{ }
a
/ \
X b
/ \
Y c
/ \
Z 0
(a--b--c)
/ / / \
X Y Z 0
在这种语言中,“if-else”只有在大括号不是强制性的情况下才可能出现:
if (a) {
X
} elif (b) {
Y
} else if (c) { // syntax error "missing braces" if braces mandatory
Z
} else {
0
}
相应的AST(如果大括号不是必需的):
这可以使CFG分析()更容易实现(虽然可能没有实际的优化好处;因此,我认为这只会让懒惰的程序员受益:d)。如果您想检查更多条件,我们可以使用if..elseif。单一条件,然后我们可以使用if或if…else。
这里我无法上传完整的示例说明,请浏览以下链接。
if..else语句详细信息
如果……其他详细信息
if/else if/else
if(condition)
{
if(condition)
statement;
else
statement;
}
else if(condition)
{
if(condition)
statement;
else
statement;
}
else
statement;
if/else和if/else如果也这样使用第二种情况。。。其他人。。。与Switch case完全一样,但它被广泛使用,Switch语句不能用于字符串。@sharpooth-我确信它们可以在PHP和其他语言中使用。不正确,因为这种语法
else如果有副作用(即免费提供)。换句话说,这里没有else if
语法,这里只有if
和else
。@greenoldman:是的,你说得对,它是免费的,但在语言标准术语中,它几乎不是“副作用”,它只是组织代码的一种方式。