計算機概論:C/C++程式設計

 

3. 讓程式選擇與決定:流程控制

 

 


授課教師:陳慶瀚

WWW : http://www.miat.ee.isu.edu.tw/cpp

E-mail : pierre@isu.edu.tw   

 

3.6 "?"條件運算子(Conditional Operator)

"?"條件運算子提供了一個精簡快速的方法來撰寫條件式的陳述,可用來取代if-else陳述。它的語法是: 

條件判斷式 ? true陳述 : false陳述; 

 "?"必須與":"合併使用,當條件判斷式為true,則執行true陳述;否則執行false陳述。我們看一個if-else的例子:

if(value >= 0.0)

value = value;

else

value = -value; 

使用"?"重寫這段程式:

value = (value >= 0.0) ? value : -value; 

這行程式碼的意義是:先判斷value是否大於等於0,如果是,則將value傳給value,否則將-value傳給value

上面兩種寫法的執行結果都是一樣得到value的絕對值。第一種if-else的寫法比較合於直覺,程式碼清晰具有可閱讀性、容易維護。不過許多有經驗的程式設計師卻偏好後者"?"寫法,因為簡潔有力。

 

/*------------------------------------------------------------------*

//  範例程式3-10

//  A C++ program using the "?" OPERATOR

//  Copyright (c) 陳慶瀚, 2001

/*------------------------------------------------------------------*                   

#include <iostream.h>

void main( )

{

int age;

    cout << "輸入你的年齡: ";

cin  >> age;

cout << ""<<age<<"歲,”;

cout << ((age >= 18) ? "已成年。" : "未成年。");

    cout<<endl;

} 

/*------------------------------------------------------------------*

//  範例程式3-11

//  A C++ program using the "?" OPERATOR

//  Copyright (c) 陳慶瀚, 2001

/*------------------------------------------------------------------*

#include <math.h>                  

#include <iostream.h>

void main( )

{

float x1,x2,err;

    cout << "輸入一個理論值 : ";

cin  >> x1;

    cout << "輸入觀測值: ";

cin  >> x2;

cout <<endl<<"誤差:";

err= (x1>x2) ? (x1-x2) : (x2-x1);

    cout<<"err = "<<err<<endl;

} 

程式執行範例:

輸入一個理論值 : 2.5

輸入觀測值 : 3.6

誤差:1.1

另一個執行範例:

輸入一個理論值 : 3.6

輸入觀測值 : 2.5

誤差:1.1


課堂練習3-6

寫一個C++的程式,"?"條件運算子讓使用者輸入一個正整數T,輸出T的絕對值。

提示:如果T大於等於0,則輸出T,否則輸出 -T


 

計算機概論:C/C++程式設計

義守大學電機系 陳慶瀚 
2001.10.15