在基本C编程中使用“If语句”。我该如何正确格式化它们?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在基本C编程中使用“If语句”。我该如何正确格式化它们?相关的知识,希望对你有一定的参考价值。
首先,我到目前为止的代码如下所示。
计算器执行我想要的所有操作,减去它在计算中仍然包含负数的事实。如果呈现为半径的数字小于零,我希望它什么也不做,但仍然计算该数字是否为非负数。但是,我在使用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
", area);}
else {
return(0); }
}
return(0);
}
删除分号
删除这一行的分号
if (&radius > -1); {
应该
if (radius > -1) {
应该这样做,以便更容易跟踪if-else语句
改变这些路线
printf("Area = %d
", area);}
return(0); }
至
printf("Area = %d
", area);
}
return(0);
}
这是if-else语句的样式,我认为跟踪代码更容易
if (condition) {
statements;
}
else if (condition) {
statements;
}
else {
statements;
}
C编译器不关心格式化,理论上你可以做任何你喜欢的事情,并且对于什么是“正确的格式化”没有共识。
但是,大多数程序员都坚持使用特定的样式,以便更容易阅读源代码;如果你在团队中工作,那么团队中的所有程序员都使用相同的样式,以便所有源代码都是一致的,那就太好了。要做到这一点,可能会有一个正式的“风格指南”,如果有,你应该遵循它。
除此之外,几乎每个人都遵循一些共同规则:
- 由大括号分隔的嵌套块以某种方式缩进(使用“N空格字符”或“N制表符”)相对于父块
- switch语句的例子将是缩进规则的例外。通常情况下,每个案例的陈述都是缩进的,即使没有大括号;并且case关键字本身可以由父交换机的大括号缩进,也可以不缩进。
- 要么所有的牙箍都要自己在一条线上;或者起始大括号位于行的末尾,结束大括号可能位于包含相关语句的行的开头
- 当一个块由一个语句组成时;它总是使用大括号并且自己占用一行,或者它从不使用大括号并与其父级共享同一行。
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
", 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
", 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!
" );
}
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
", area);}else{print("Radius needs to be non-negative!
");}
格式化只对您和任何必须阅读/维护代码的人有用。无论你选择哪种风格,都要与之保持一致。
以上是关于在基本C编程中使用“If语句”。我该如何正确格式化它们?的主要内容,如果未能解决你的问题,请参考以下文章
使用“while read”时,如何正确格式化传递给远程服务器的“if”语句?