MATLAB三元条件运算符,C++ ?:条件运算符(三目运算符)用法详解
條件運算符強大而獨特,它提供了一種表達簡單 if-else 語句的簡寫方法。該運算符由問號(?)和冒號(:)組成,其格式如下:
表達式 ? 表達式 : 表達式 ;
以下是使用條件運算符的語句示例:
x < 0 ? y = 10 : z = 20;
這個語句被稱為條件表達式,它由 3 個子表達式組成,使用問號 ? 和冒號 : 分隔。這 3 個表達式分別是:x<0,y = 10 和 z = 20。
上面的條件表達式與以下 if-else 語句執行相同的操作:
if (x < 0)
y = 10;
else
z = 20;
問號前面的條件表達式的部分是要測試的條件。這就像 if 語句的括號中的表達式。如果條件是真的,則執行 ? 和 : 之間的語句;否則,執行 : 之后的部分。如果認為有幫助,可以在子表達式周圍放置圓括號,如下所示:
(x < 0) ? (y = 10) : (Z = 20);
圖 1 說明了 3 個子表達式所扮演的角色。
圖? 1 條件運算符中 3 個子表達式的作用
注意,由于需要 3 個操作數,所以條件運算符是三元運算符。
使用條件表達式的值
請記住,在 C++ 中,所有表達式都有一個值,包括條件表達式。如果第一個子表達式為真,則條件表達式的值為第二個子表達式的值,否則它就是第三個子表達式的值。以下是使用條件表達式值的賦值語句示例:
a = (x > 100) ? 0 : 1;
分配給變量 a 的值將為 0 或 1,具體是哪個則取決于 x 是否大于 100。該語句具有與以下 if-else 語句相同的邏輯:
if (x > 100)
a = 0 ;
else
a = 1;
下面的程序可用于幫助一個咨詢師計算她的收費。她的收費標準是每小時 50.00 美元,但她的最低收費是 5 個小時。條件運算符用于確保小時數不低于 5 的語句。
#include
#include
using namespace std;
int main()
{
const double PAY_RATE = 50.0; // Hourly pay rate
const int MIN_HOURS = 5; // Minimum billable hours
double hours, // Hours worked
charges; // Total charges
//Get the hours worked
cout << "How many hours were worked? ";
cin >> hours;
// Determine how many hours to charge for
hours = hours < MIN_HOURS ? MIN_HOURS : hours;
// Calculate and display the charges
charges = PAY_RATE * hours;
cout << fixed << showpoint << setprecision(2)<< "The charges are $" << charges << endl;
return 0;
}
程序輸出結果:
How many hours were worked? 10
The charges are $500.00
看一下程序在中使用條件表達式的語句:
hours = hours < MIN_HOURS ? MIN_HOURS : hours;
如果 hours 變量的值小于 MIN_HOURS,則它會將 MIN_HOURS 存儲到 hours 中。否則它就會將已經具有的值賦給 hours。這樣可以確保使用不少于 MIN_HOURS 的時間數來計算咨詢費用。
可以看到,條件運算符使程序員能夠將決策權集成到簡潔的代碼行中。只要多激發一點想象力,它就可以應用于許多其他編程問題。例如,來看以下語句:
cout << "Your grade is: " << (score < 60 ? "Fail." : "Pass.");
如果要使用 if-else 語句,則該語句需要改寫為以下形式:
if (score < 60)
cout << "Your grade is: Fail.";
else
cout << "Your grade is: Pass.";
注意,由于 << 運算符的優先級高于條件運算符(?:),所以需要使用圓括號包圍條件表達式。如果沒有括號,則只有表達式 score <60 的值被發送到 cout。
總結
以上是生活随笔為你收集整理的MATLAB三元条件运算符,C++ ?:条件运算符(三目运算符)用法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8.1 - mysql 基本知识
- 下一篇: c++ 11 原子操作库 (std::a