我想确定一些事情,
当我有多个if/else
条件且if
并不意味着else
个条件之一if
条件;下一个else
语句是否适用于最后一个if
语句?
例如:
if(condition1)
{
//operation1
}
if(condition2)
{
//operation2
}
else
{
//operation3.
}
如上例所示,如果我没有使用else
作为第一个if
语句,if
语句执行此else
是为了什么?如果我没有为每个else
指定if
,这会对我造成问题吗?
我做了一些测试,但想确定这实际上是如何运作的。
答案 0 :(得分:12)
答案 1 :(得分:3)
在C(以及其他类C语言编程语言)中,您可以添加额外的荣誉以使语句更清晰。您的代码相当于:
{
if(condition1) {
//operation1
}
}
{
if(condition2) {
//operation2
} else {
//operation3.
}
}
else
语句与第二个if
语句绑定。这意味着该计划将首先评估condition1
。如果condition1
成立,则会执行operation1
。接下来无论第一次测试的结果如何,它都会测试condition2
。如果condition2
成立,则会执行operation2
,否则将执行operation3
。 else始终与最近的if
(自下而上)绑定,该else
(自下而上)尚未被 BEGIN;
INSERT INTO par VALUES(par_party_uid_seq.nextval,:p1_Party_name);
INSERT INTO par VALUES(ser_service_uid_seq.nextval,:p2_Service_name);
END;
限制,或者使用花括号作为另一个绑定策略的括号。
答案 2 :(得分:2)
如果我没有对第一个
if
语句使用else,ifelse
的if语句是否适用?
第二个if
声明。
规则是else
将在多个if
的情况下与最近的if
一起使用。
C11§6.8.4.1/ 3:
else
与语法允许的词法最近的前if
相关联。
答案 3 :(得分:2)
else语句绑定到最后一个if语句。由于第二个if语句
,第一个if语句没有else答案 4 :(得分:2)
在if语句(或它的块)之后必须始终直接跟随else
语句。因此,示例中的else
会影响if(condition2)
。
答案 5 :(得分:2)
最近的。如果语法允许,则else与词法上最接近的前缀相关联。
if(condition1)
{
//operation1
}
if(condition2)
{
//operation2
} else { // <<<<
//operation3.
}
答案 6 :(得分:2)
引用C11
标准,章节§6.8.4.1, The if statement
(强调我的)
else
与词汇最接近的前if
相关联 语法。
因此,您的else
语句绑定到 词法最近的 if
语句,即if(condition2)
语句。< / p>
答案 7 :(得分:2)
'else'始终附加到最近的'if'。换句话说,最后一个与最后一个if配对。
最好是可读性使用花括号和适当的缩进。
答案 8 :(得分:2)
始终与其前面的if语句相关。
答案 9 :(得分:1)
我不知道你想要做什么?但你可以使用if / else if语句,你可以使用swtich。
example if-else:
if(condition 1)
{
// your code here
}
else if(conditition2)
{
//your code here
}
else
{
// your code here
}
or a swtich:
var caseSwitchLastName = "De Waard"
var caseSwitchFirstName = "Pieter";
switch (caseSwitchFirstName)
{
case Pieter:
Console.WriteLine("His name is Pieter");
break;
case Sander:
Console.WriteLine("His name is Sander");
break;
default:
Console.WriteLine("His name is de Waard");
break;
}
两个代码具有相同的输出。只有示例更少打字。
答案 10 :(得分:1)
有三种不同类型的选择陈述。
单一选择声明(如果)
双重选择陈述(如果......其他)
多选语句(转换)
在你的情况下,第一个if是单个选择语句,当它到达块的结尾时,它将继续顺序处理程序中的以下语句。
因为你的其他人就在你的第二个之后,因此它使这个陈述成为双重选择陈述。如果结果为真,则执行if块中的操作;如果结果为假,则执行else中的操作。
答案 11 :(得分:0)
如果在else之前,那么else就是最后一个。
祝你好运!