根据语言语义制作外部语句的“else if”部分?
Posted
技术标签:
【中文标题】根据语言语义制作外部语句的“else if”部分?【英文标题】:Making the "else if" part of the outer statement according to language semantics? 【发布时间】:2016-04-30 22:37:39 【问题描述】:假设我们有以下 C 语句:
if( cond)
if( cond)
stat
else
stat
根据语言语义,“else stat”是内部 if 语句的一部分。为了使“else stat”成为外部 if 语句的一部分,我需要做什么?据我所知,在 then 之后和 if 语句的末尾添加 以将它们分开是可行的。它是否正确?还有另一种方法吗?
【问题讨论】:
c 中没有then
!
在嵌套的if
周围使用大括号,这样它是明确的。如果使用正确的选项,GCC 将建议这样做。这是唯一的方法。为什么你还想要一个替代品?
@JonathanLeffler 我只是想看看是否有另一种方法可以做到这一点。我的教科书解释说还有其他方法,但没有说它们是什么。尝试研究它们,但没有运气。所以呀。谢谢大家!
then
来自哪里?那不是 C。
为什么有人会对所有答案投反对票?
【参考方案1】:
最佳做法是始终使用括号。它使您自己(或其他人)以后更容易阅读/理解/修改。
像这样:
if (condition1)
if (nestedCondition1)
//do something
else
//do something else
然后很容易快速看出你在哪个语句中。
【讨论】:
【参考方案2】:在这种情况下,您应该使用复合语句
if( cond1 )
if ( cond2 )
stat;
else
stat;
从 C 语法的角度来看,另一种方法是可读性较差且不应使用的方法如下
if( cond1 )
if ( cond2 )
stat;
else
; // empty statement
else
stat;
但是可以使用这种方法,然后内部 if 包含另一个 else if。例如
if( cond1 )
if ( cond2 )
stat;
else if ( cond3 )
stat;
else
; // empty statement
else
stat;
或者可以通过以下方式使其更具可读性
if( cond1 )
if ( cond2 )
stat;
else
; // empty statement
else
stat;
【讨论】:
【参考方案3】:你需要使用括号:
if (cond)
if (cond)
//inner conditional
else
//outer conditional
【讨论】:
以上是关于根据语言语义制作外部语句的“else if”部分?的主要内容,如果未能解决你的问题,请参考以下文章
一万个if..........else....语句,请问如何去优化它。。。。以提升性能效率