C++分支語句


在日常生活中的很多時候,我們要進行判斷,比如說:判斷1+1是否等於2,今天的主食吃米飯還是饅頭,喜歡一個人到底要不要表白......咳咳,總之,需要做判斷的情況有很多很多。程序本就是為了解決問題而編寫的,自然也有很多需要進行判斷的地方。這一節的內容就是學會如何使用分支語句進行判斷。

在學習分支語句前先介紹一個新的數據類型:布爾值(bool)

在C++中,布爾值只有兩種,即真(true)和假(false),然后我們來看一下布爾表達式,布爾表達式是用來判斷布爾值為真還是假的表達式,例如:

1+1==2; //布爾值為真

1+1!=3; //布爾值為假

連接兩邊的叫做關系運算符,有下面幾種:(注意等於是兩個“=”)

下面我們學習最簡單的單分支if語句

if(boolean-expression)//括號中的是一個布爾值,當其為真時,執行下面statement語句
{
    statement(s);//要執行的部分,有分號
}//注意括號要成對,沒有分號

然后我們來學習如何聲明布爾值,並在if分支語句中使用它:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     bool boolean = 1;
 8 //聲明一個bool類型的變量boolean,1或其他非0值表示true,0表示false;
 9     if (boolean)//以if關鍵字開頭的分支語句,當括號內為真時,輸出true;
10     {
11         cout << "true";
12     }
13     return 0;
14 }

運行后的結果就是輸出一個單詞“true”,如果將boolean = 1改成boolean = 0,那么運行的結果是什么都不輸出,因為boolean現在的值是false。

但是如果我們想知道boolean是什么的時候,我們可以使用雙分支if-else語句

if(boolean-expression)
{
    statement(s)-for-true-case;
}
else //如果布爾表達式不是true,執行下面語句
{
    statement(s)-for-false-case;
}

舉個例子,如果我們想讓用戶輸入一個圓的半徑進而求出圓的面積,那么用戶就不能輸入小於0的數:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     const double PI = 3.14159;//定義一個常量PI的數值為3.14159
 8     double radius = 0,area = 0;
 9     //定義double變量radius和area分別為圓的半徑和所求的面積
10     cin >> radius;//輸入圓的半徑
11     
12     if(radius>=0)//判斷輸入的半徑是否合法
13     {
14         area = radius*radius*PI;
15         cout << "面積為:" << area;
16     }
17     else
18     {
19         cout << "無效輸入,請輸入不小於0的值";
20     }
21     return 0;
22 }

如果statement只有一句(像上面else中的情況),可以不寫括號,但是並不建議,因為在修改時很容易造成錯誤。

然后就是if嵌套語句多分支的if-else語句

上圖中的a就是if嵌套語句,b則是多分支語句,兩者表達的意思一樣,但是第二種風格要更好一些。

接下來我們來學習邏輯運算符

以及它們各自的真值表:

"!", "&&", "||" 分別表示離散數學中的邏輯非,邏輯與,邏輯或(相當於集合的補,交,並)。

比如說我要判斷一個整數是否大於10且小於等於20:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int num = 0;
 8     cin >> num;
 9     
10     if(num>10&&num<=20)
11     {
12         cout << "合法輸入"
13     }       
14     else
15     {
16         cout << "非法輸入";
17     }
18     return 0;
19 }

除了if,還有一種分支語句,是switch語句。switch語句可以簡化多重情況的分支語句。

switch(switch-expression)
{
    case value1:statement(s)1;break;
    //當switch表達式匹配到的值為value1時,執行statement1語句,並且跳出語句塊
    case value2:statement(s)2;break;
    //當switch表達式匹配到的值為value12時,執行statement2語句,並且跳出語句塊
    ...
    case value1n:statement(s)n;break; 
    //當switch表達式匹配到的值為valuen時,執行statementn語句,並且跳出語句塊
    default:statement-for-default;
    //當switch表達式匹配不到給定的value時,執行statement-for-default語句后退出
}

//上面代碼等同於下面代碼:
if(if-expression==value1)
{
    statement(s)1;
}
else if(if-expression==value2)
{
    statement(s)2;
}
else ...if(if-expression==valuen)
{
    statement(s)n;
}
else
{
    statement-for-default;
}

再來說一下條件表達式,它是C++中唯一一個三元運算符,格式如下:

bool-expression ? expression1 : expression2;
//如果bool表達式為真,則表示expression1,否則為expression2

//相當於:
if (bool-expression)
{
    expression1;
}
else 
{
    expression2;
}

運算符的優先級:

 

因為要記住這些優先級很麻煩,所以建議可以不用去記優先級,多用括號即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM