我们的组织有一个必需的编码规则(没有任何解释),即:
if...else if构造应该用else子句终止
示例1:
if ( x < 0 )
{
x = 0;
} /* else not needed */
if ( x < 0 )
{
x = 0;
}
else if ( y < 0 )
{
x = 3;
}
else /* this else clause is required, even if the */
{ /* programmer expects this will never be reached */
/* no change in value of x */
}
正如另一个答案中提到的,这来自MISRA-C编码指南。目的是防御性编程,这是一个在关键任务编程中经常使用的概念。
也就是说,每个if-else if
必须以else
结尾,每个switch
必须以default
结尾。
这有两个原因:
停止失控代码。在关键任务软件中,您需要编写健壮的程序,甚至考虑到极不可能的情况。这样您就可以看到类似这样的代码
if (mybool == TRUE)
{
}
else if (mybool == FALSE)
{
}
else
{
// handle error
}
这段代码对PC程序员和计算机科学家来说是完全陌生的,但它在关键任务软件中却完全有意义,因为它能捕捉到“mybool”因任何原因被破坏的情况。
从历史上看,您会担心RAM存储器会因为EMI/噪声而损坏。这在今天已经不是什么大问题了。更有可能的是,内存损坏是由于代码中其他地方的bug导致的:指向错误位置的指针、数组越界bug、堆栈溢出、失控代码等。
另外,如果您在每个if
后面都写了一个空的else
,那么代码就会完全混乱。
MISRA-C:201215.7没有给出为什么不需要else
的理由,它只是说:
注意:对于简单的if
语句,不需要最后的else
语句。
if statements in Smarty have much the same flexibility as php if statements, with a few added features for the . Everyif must be paired with an/if .else andelseif are also permitted. "eq", "ne","neq",
概要 <#if condition> ... <#elseif condition2> ... <#elseif condition3> ... ... <#else> ... </#if> 这里: condition, condition2, 等:将被计算成布尔值的表达式。 elseif 和 else 是可选的。 描述 你可以使用 if, elseif 和 else 指令来条
一个If语句后面跟着一个或多个ElseIf语句,这些语句由布尔表达式组成,然后是一个默认的else语句,当所有条件都变为false时执行。 语法 (Syntax) 以下是VBScript中If Elseif - Else语句的语法。 If(boolean_expression) Then Statement 1 ..... ..... Statement n ElseIf
if语句后面可以跟一个else if...else语句,这对于使用单个if...else if语句测试各种条件非常有用。 语法 (Syntax) if...else if...else语句的语法如下 - if boolean_expression_1 { /* Executes when the boolean expression 1 is true */ } else if boolea
if语句后面可以跟一个else if...else语句,这对于使用单个if...else if语句测试各种条件非常有用。 语法 (Syntax) if...else if...else语句的语法如下 - if boolean_expression_1 { /* Executes when the boolean expression 1 is true */ } else if boolea
我制作了这个简单的GUI程序,它可以计算特定字符序列的元音和辅音。计数器还可以,但是我对if-else语句有一个问题,当那个字符既不是元音也不是辅音时,我必须显示一条消息...代码如下: 它看起来是这样的: 我输入了一个没有任何特殊字符或数字的字符“序列”。但它仍然显示消息,其中它有元音和辅音以外的其他字符。if-else语句有问题吗?感谢您的帮助:)