首先,我到目前为止的代码如下所示。
计算器执行我想要的所有操作,减去它在计算中仍然包含负数的事实。如果呈现为半径的数字小于零,我希望它什么也不做,但仍然计算该数字是否为非负数。但是,我在使用if语句时遇到问题。我之前没有使用过这些,因为我只是一个初学者。我只需要朝着正确的方向努力。我需要一个“别的”吗?任何帮助是极大的赞赏!
#include <stdio.h>
int radius, area;
main()
{
printf("Enter radius: ");
scanf("%d", &radius);
{
if (&radius > -1); {
area = (int)(3.14159 * radius * radius);
printf("Area = %d\n", area);}
else {
return(0); }
}
return(0);
}
删除分号
删除这一行的分号
if (&radius > -1); {
应该
if (radius > -1) {
应该这样做,以便更容易跟踪if-else语句
改变这些路线
printf("Area = %d\n", area);}
return(0); }
至
printf("Area = %d\n", area);
}
return(0);
}
这是if-else语句的样式,我认为跟踪代码更容易
if (condition) {
statements;
}
else if (condition) {
statements;
}
else {
statements;
}
C编译器不关心格式化,理论上你可以做任何你喜欢的事情,并且对于什么是“正确的格式化”没有共识。
但是,大多数程序员都坚持使用特定的样式,以便更容易阅读源代码;如果你在团队中工作,那么团队中的所有程序员都使用相同的样式,以便所有源代码都是一致的,那就太好了。要做到这一点,可能会有一个正式的“风格指南”,如果有,你应该遵循它。
除此之外,几乎每个人都遵循一些共同规则:
else if
对总是“块由单个语句组成”规则的例外(if
是一个从不被视为单独块的单个语句,人们假装else if
是单个elseif
关键字)。这意味着什么(取决于谁在争论时得到他们的方式)这可能是可以接受的:
int main() {
int area;
printf("Enter radius: ");
scanf("%d", &radius);
switch(radius) {
case 0:
return 0;
case 1:
return 1;
}
if (&radius > -1) {
area = (int)(3.14159 * radius * radius);
printf("Area = %d\n", area);
} else return -1;
return area;
}
..这也可以接受:
int main()
{
int area;
printf("Enter radius: ");
scanf("%d", &radius);
switch(radius)
{
case 0:
return 0;
case 1:
return 1;
}
if (&radius > -1)
{
area = (int)(3.14159 * radius * radius);
printf("Area = %d\n", area);
}
else
{
return -1;
}
return area;
}
if(&radius> -1);
在&
之前丢失radius
并丢失分号:
if ( radius > -1 ) { ... }
我需要一个“别的”吗?
在这种特殊情况下,没有。你没有在else
分支中做任何你没有无条件做的事情(即return
声明)。如果只在条件失败时需要采取特定操作,例如打印错误消息,则只需要一个else
分支:
if ( radius > -1 )
{
...
}
else
{
printf( "Radius needs to be non-negative!\n" );
}
return 0;
至于如何格式化,有多种风格各有优缺点。我喜欢的风格有自己的{
和}
:
if ( condition )
{
// if branch
}
else if ( another condition )
{
// else if branch
}
else
{
// else branch
}
这种风格对我来说最容易阅读,使得它在块开始或结束时更清晰等。它还增加了垂直空间的使用,因此您在窗口中获得的代码更少,这意味着您可能需要来回滚动更多。
这就是所谓的K&R风格,因为它被Kernighan&Ritchie推广,其中开放的{
与if
或else
在同一条线上:
if ( condition ) {
// if branch
}
else if ( condition ) {
// else if branch
}
else {
// else branch
}
在块开始的地方挑选不是那么容易,但也不是太糟糕,而且更紧凑,所以你可以在有限的空间内安装更多的代码行。
然后有一种我讨厌讨厌的风格,它将关闭的}
放在与else
或else if
相同的线上:
if ( condition ) {
// if branch
} else if ( condition ) {
// else if branch
} else {
// else branch
}
我发现这种风格很难阅读和遵循。但是,它是最紧凑的风格,通常用于屏幕空间非常有限的情况下(例如在演讲或教程中的PowerPoint幻灯片中)。
请注意,只要打开和关闭大括号正确匹配,编译器就不关心您使用哪种样式。您可以将所有内容放在一行中,几乎没有空格,如:
if(radius>-1){area=(int)(3.14159*radius*radius);printf("Area = %d\n", area);}else{print("Radius needs to be non-negative!\n");}
格式化只对您和任何必须阅读/维护代码的人有用。无论你选择哪种风格,都要与之保持一致。