在嵌套的IF-ELSE之前的IF语句

时间:2017-03-22 14:52:04

标签: c if-statement syntax

我的问题是关于下面的片段是否被视为良好的程序结构。

if(speed > SPEED_LIMIT)
    printf("Speeding!\n");

if(speed >= 80)
{
    printf("A fine of $%d has been issued!\n", FINE_C);
}
else
    if(speed >= 70)

在进入嵌套if之前,是否可以使用基本if-else语句?

可能是一个奇怪的问题,只有第二周进入学习编程,我们的单位在C。

4 个答案:

答案 0 :(得分:1)

是的,从语法上来说没有问题。您可以将任意数量的if语句和if-else语句放在一起。它主要是关于代码的可读性和可维护性,需要其他可能的方法。

例如,更好的"分组"会是

if (more than limit)
{
    if (more than higher limit) {...}
    else if (more than middle limit) {...}
    else {....}
}
else
{
    //normal
}

if (more than limit) {...}
if (more than higher limit) {...}
else if (more than middle limit) {...}
else if {some other condition}
else
{
    //normal
}

答案 1 :(得分:0)

是的,你看得太多了。但是,格式化它的常规方法是不添加额外的缩进级别,将else和if放在同一行上是正常的。这样你就可以随心所欲地使用这些,而不会偏离屏幕的右侧,即

if(speed >= 80)
{
    printf("A fine of $%d has been issued!\n", FINE_C);
}
else if(speed >= 70)
{ 
    // whatever
}
else if (speed >= 60)
{
    // whatever
}
else if (speed >= 50)
// etc

它就像是一个稍微灵活的switch语句版本。

修改

我看到我回答了错误的问题。以上都很好,但如果你问这是否可以

if(speed > SPEED_LIMIT)
    printf("Speeding!\n");

if(speed >= 80) ...

然后是的,虽然如果速度限制超过80,逻辑将是错误的,所以最好这样构造它:

    if(speed > SPEED_LIMIT)
    {
        printf("Speeding!\n");

        if(speed >= 80) ...
    }

答案 2 :(得分:0)

这样做没有问题。考虑到这两者是否可分,无论条件满足与否,这里唯一需要注意的是,如果第一个条件是真/假(无论如何),那么被执行。如果下一个条件为真,那么它将被执行,否则将被忽略。

在您想要第二个条件之前,不管先执行是真还是假,都要执行。

答案 3 :(得分:0)

它不一定是坏事,但是,在你的代码中保持一致是你应该从编程生涯开始就自学的东西。 :)

例如,所有3个ifs都可以用嵌套的if / else来制作,在我看来(和很多其他程序员一样)看起来更流行。

if(speed > SPEED_LIMIT) {
    printf("Speeding!\n");
} else if(speed >= 80) {
    printf("A fine of $%d has been issued!\n", FINE_C);
} else {
    /* whatever happens when speed is greater or equal to 70 /*
}

在大型项目中,一致性非常重要。不仅适合您自己,也适合您的同事。例如,当以相同的方式编写两个函数以不同的方式编写时,理解它们的作用会更加有效,但最终会意识到它们会做同样的事情。相当令人沮丧,不是吗? ;)

Here您可以找到一些编码约定,这些约定是您可以遵循的一些指导原则,当然,您的老师或将来您公司可以为您提供其他必须遵循的约定。

祝你好运!