C++條件語(yǔ)句和條件運(yùn)算符的使用方法講解
if語(yǔ)句的3種形式
1) if(表達(dá)式) 語(yǔ)句。
例如:
if(x>y) cout<<x<<endl;
這種if語(yǔ)句的執(zhí)行過(guò)程見(jiàn)下圖。
2) if(表達(dá)式) 語(yǔ)句1 else 語(yǔ)句2
例如:
if (x>y) cout<<x; else cout<<y;
見(jiàn)圖。
3)
if(表達(dá)式1) 語(yǔ)句1 else if(表達(dá)式2) 語(yǔ)句2 else if(表達(dá)式3) 語(yǔ)句3 … else if(表達(dá)式m) 語(yǔ)句m else 語(yǔ)句n
例如:
if (number>500) cost=0.15; else if(number>300) cost=0.10; else if(number>100) cost=0.075; else if(number>50) cost=0.05; else cost=0;
流程圖見(jiàn)圖。
說(shuō)明:
從圖3.5和圖3.6可以看到: 3種形式的if語(yǔ)句都是由一個(gè)入口進(jìn)來(lái),經(jīng)過(guò)對(duì)“表達(dá)式”的判斷,分別執(zhí)行相應(yīng)的語(yǔ)句,最后歸到一個(gè)共同的出口。這種形式的程序結(jié)構(gòu)稱(chēng)為選擇結(jié)構(gòu)。在C++中if語(yǔ)句是實(shí)現(xiàn)選擇結(jié)構(gòu)主要的語(yǔ)句。
3種形式的if語(yǔ)句中在if后面都有一個(gè)用括號(hào)括起來(lái)的表達(dá)式,它是程序編寫(xiě)者要求程序判斷的“條件”,一般是邏輯表達(dá)式或關(guān)系表達(dá)式。
第2、第3種形式的if語(yǔ)句中,在每個(gè)else前面有一分號(hào),整個(gè)語(yǔ)句結(jié)束處有一分號(hào)。
在if和else后面可以只含一個(gè)內(nèi)嵌的操作語(yǔ)句(如上例),也可以有多個(gè)操作語(yǔ)句,此時(shí)用花括號(hào)“{}”將幾個(gè)語(yǔ)句括起來(lái)成為一個(gè)復(fù)合語(yǔ)句。
【例】求三角形的面積。
#include <iostream>
#include <cmath> //使用數(shù)學(xué)函數(shù)時(shí)要包含頭文件cmath
#include <iomanip> //使用I/O流控制符要包含頭文件iomanip
using namespace std;
int main( )
{
double a,b,c;
cout<<"please enter a,b,c:";
cin>>a>>b>>c;
if (a+b>c && b+c>a && c+a>b)
{ //復(fù)合語(yǔ)句開(kāi)始
double s,area;//在復(fù)合語(yǔ)句內(nèi)定義變量
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
cout<<setiosflags(ios::fixed)<<setprecision(4); //指定輸出的數(shù)包含4位小數(shù)
cout<<"area="<<area<<endl; //在復(fù)合語(yǔ)句內(nèi)輸出局部變量的值
} //復(fù)合語(yǔ)句結(jié)束
else cout<<"it is not a trilateral!"<<endl;
return 0;
}
運(yùn)行情況如下:
please enter a, b, c:2.45 3.67 4.89↙ area=4.3565
變量s和area只在復(fù)合語(yǔ)句內(nèi)用得到,因此在復(fù)合語(yǔ)句內(nèi)定義,它的作用范圍為從定義變量開(kāi)始到復(fù)合語(yǔ)句結(jié)束。如果在復(fù)合語(yǔ)句外使用s和area,則會(huì)在編譯時(shí)出錯(cuò),系統(tǒng)認(rèn)為這兩個(gè)變量未經(jīng)定義。將某些變量局限在某一范圍內(nèi),與外界隔離,可以避免在其他地方被誤調(diào)用。
if語(yǔ)句的嵌套
在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句稱(chēng)為if語(yǔ)句的嵌套。一般形式如下:
if( ) if( )語(yǔ)句1 else 語(yǔ)句2 else if( )語(yǔ)句3 else 語(yǔ)句4
應(yīng)當(dāng)注意if與else的配對(duì)關(guān)系。else總是與它上面最近的、且未配對(duì)的if配對(duì)。假如寫(xiě)成:
if( ) if( )語(yǔ)句1 else if( )語(yǔ)句2 else 語(yǔ)句3
編程序者把第一個(gè)else寫(xiě)在與第一個(gè)if(外層if)同一列上,希望else與第一個(gè)if對(duì)應(yīng),但實(shí)際上else是與第二個(gè)if配對(duì),因?yàn)樗鼈兿嗑嘧罱?,而且第二個(gè)if并未與任何else配對(duì)。為了避免誤用,最好使每一層內(nèi)嵌的if語(yǔ)句都包含else子句(如本節(jié)開(kāi)頭列出的形式),這樣if的數(shù)目和else的數(shù)目相同,從內(nèi)層到外層一一對(duì)應(yīng),不致出錯(cuò)。
如果if與else的數(shù)目不一樣,為實(shí)現(xiàn)程序設(shè)計(jì)者的企圖,可以加花括號(hào)來(lái)確定配對(duì)關(guān)系。例如:
if( )
{
if ( ) 語(yǔ)句1
} //這個(gè)語(yǔ)句是上一行if語(yǔ)句的內(nèi)嵌if
else 語(yǔ)句2//本行與第一個(gè)if配對(duì)
這時(shí){ }限定了內(nèi)嵌if語(yǔ)句的范圍,{ }外的else不會(huì)與{ }內(nèi)的if配對(duì)。關(guān)系清楚,不易出錯(cuò)。
C++條件運(yùn)算符(? :)
若在if語(yǔ)句中,當(dāng)被判別的表達(dá)式的值為“真”或“假”時(shí),都執(zhí)行一個(gè)賦值語(yǔ)句且給同一個(gè)變量賦值時(shí),可以用簡(jiǎn)單的條件運(yùn)算符來(lái)處理。例如,若有以下if語(yǔ)句:
if (a>b) max=a; else max=b;
可以用條件運(yùn)算符(? :)來(lái)處理:
max=(a>b)?a:b;
其中“(a>b)?a:b”是一個(gè)“條件表達(dá)式”。它是這樣執(zhí)行的:如果(a>b)條件為真,則條件表達(dá)式的值就取“?”后面的值,即條件表達(dá)式的值為a,否則條件表達(dá)式的值為“:”后面的值,即b。
條件運(yùn)算符要求有3個(gè)操作對(duì)象,稱(chēng)三目(元)運(yùn)算符,它是C++中惟一的一個(gè)三目運(yùn)算符。條件表達(dá)式的一般形式為:
表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3;
條件運(yùn)算符的執(zhí)行順序是:先求解表達(dá)式1,若為非0(真)則求解表達(dá)式2,此時(shí)表達(dá)式2的值就作為整個(gè)條件表達(dá)式的值。若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個(gè)條件表達(dá)式的值?!癿ax=(a>b)?a:b” 的執(zhí)行結(jié)果是將條件表達(dá)式的值賦給max。也就是將a和b二者中的大者賦給max。條件運(yùn)算符優(yōu)先于賦值運(yùn)算符,因此上面賦值表達(dá)式的求解過(guò)程是先求解條件表達(dá)式,再將它的值賦給max。
條件表達(dá)式中,表達(dá)式1的類(lèi)型可以與表達(dá)式2和表達(dá)式3的類(lèi)型不同。如
x ? 'a': 'b';
如果已定義x為整型變量,若x=0,則條件表達(dá)式的值為字符'b'的ASCII碼。表達(dá)式2和表達(dá)式3的類(lèi)型也可以不同,此時(shí)條件表達(dá)式的值的類(lèi)型為二者中較高的類(lèi)型。如有條件表達(dá)式x>y?1:1.5,如果x≤y,則條件表達(dá)式的值為1.5,若x>y,值應(yīng)為1,由于C++把1.5按雙精度數(shù)處理,雙精度的類(lèi)型比整型高,因此,將1轉(zhuǎn)換成雙精度數(shù),以此作為表達(dá)式的值。
【例】輸入一個(gè)字符,判別它是否為大寫(xiě)字母,如果是,將它轉(zhuǎn)換成小寫(xiě)字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。
#include <iostream>
using namespace std;
int main( )
{
char ch;
cin>>ch;
ch=(ch>='A' && ch<='Z')?(ch+32):ch; //判別ch是否大寫(xiě)字母,是則轉(zhuǎn)換
cout<<ch<<endl;
return 0;
}
上一篇:詳解C語(yǔ)言中accept()函數(shù)和shutdown()函數(shù)的使用
欄 目:C語(yǔ)言
下一篇:C語(yǔ)言中經(jīng)socket接收數(shù)據(jù)的相關(guān)函數(shù)詳解
本文標(biāo)題:C++條件語(yǔ)句和條件運(yùn)算符的使用方法講解
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/2762.html
您可能感興趣的文章
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 01-10深入理解C++中常見(jiàn)的關(guān)鍵字含義
- 01-10使用C++實(shí)現(xiàn)全排列算法的方法詳解
- 01-10c++中inline的用法分析
- 01-10用C++實(shí)現(xiàn)DBSCAN聚類(lèi)算法
- 01-10全排列算法的非遞歸實(shí)現(xiàn)與遞歸實(shí)現(xiàn)的方法(C++)
- 01-10C++大數(shù)模板(推薦)
- 01-10淺談C/C++中的static與extern關(guān)鍵字的使用詳解
- 01-10深入C/C++浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)方式詳解
- 01-10Linux線程管理必備:解析互斥量與條件變量的詳解


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語(yǔ)言函數(shù)調(diào)用后清空內(nèi)存 c語(yǔ)言調(diào)用
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言的正則匹配函數(shù) c語(yǔ)言正則表達(dá)
- 04-02c語(yǔ)言用函數(shù)寫(xiě)分段 用c語(yǔ)言表示分段
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)
- 04-02c語(yǔ)言編寫(xiě)函數(shù)冒泡排序 c語(yǔ)言冒泡排
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 04-02c語(yǔ)言分段函數(shù)怎么求 用c語(yǔ)言求分段
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎
- 04-02c語(yǔ)言調(diào)用函數(shù)求fibo C語(yǔ)言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10delphi制作wav文件的方法
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10C#中split用法實(shí)例總結(jié)
- 04-02jquery與jsp,用jquery


