[英]Using "If Statements" in basic C programming. How can I properly format them?
首先,我到此為止的代碼如下。
計算器可以做我想做的一切,但它在計算中仍然包含負數。 如果呈現為半徑的數字小於零,我希望它什么都不做,但仍然計算該數字是否為非負數。 但是,我在使用 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 編譯器不關心格式,理論上你可以做任何你喜歡的事情,並且對於什么是/不是“正確的格式”沒有達成共識。
然而,大多數程序員堅持特定的風格,以便更容易閱讀源代碼; 如果你在一個團隊中工作,那么如果團隊中的所有程序員都使用相同的風格,這樣所有的源代碼都是一致的,那就太好了。 為了實現這一點,可能會有一個正式的“風格指南”,如果有,你應該遵循它。
除此之外,還有一些幾乎每個人都遵循的共同規則:
由大括號分隔的嵌套塊相對於父塊以某種方式縮進(使用“N 個空格字符”或“N 個制表符”)
switch 語句的情況將是縮進規則的例外。 通常情況下,即使沒有大括號,每個 case 的語句也會縮進; 並且 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\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;
}
如果 (&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");}
格式化只對您和任何必須閱讀/維護您的代碼的人重要。 無論你選擇什么風格,都要與之保持一致。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.