我的问题是关于下面的片段是否被视为良好的程序结构。
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。
答案 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您可以找到一些编码约定,这些约定是您可以遵循的一些指导原则,当然,您的老师或将来您公司可以为您提供其他必须遵循的约定。
祝你好运!