簡體   English   中英

在基本 C 編程中使用“If 語句”。 如何正確格式化它們?

[英]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 推廣,其中開頭{ifelse位於同一行:

if ( condition ) {
  // if branch
} 
else if ( condition ) {
  // else if branch
}
else {
  // else branch
}

不是容易挑選出塊的開始位置,但也不算太糟糕,而且更緊湊,因此您可以在有限的空間中放置更多行代碼。

然后有一種我非常討厭的風格,它將結束}elseelse 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM