我不熟悉这个C++表示法

Kan*_*iot 0 c++ expression

我正在努力理解我教授编写的代码.代码中有一行说

a =(b> c)?c:b;

其中a,b和c只是浮点变量.这是我第一次看到这个表达.我试图谷歌它但没有出现.对此的任何解释或链接都受到欢迎.谢谢.

Sum*_*ans 5

这是一个三元表达.三元表达式采用以下形式:

condition ? <result_if_true> : <result_if_false>
Run Code Online (Sandbox Code Playgroud)

三元表达式可以转换为if语句:

if (condition) {
    <result_if_true>;
} else {
    <result_if_false>;
}
Run Code Online (Sandbox Code Playgroud)

三元表达式相对于等效if语句的优点是变量声明.例如,以下if语句和三元表达式是等效的,但很明显哪个更简洁:

int seconds = 4;

// ===== USING IF STATEMENT =====
string secs_string;

if (seconds == 1) {
    secs_string = "second";
} else {
    secs_string = "seconds";
}

cout << "You have " << seconds << " "<< secs_string << " remaining." << endl;
// Output: You have 4 seconds remaining.


// ===== USING TERNARY EXPRESSION =====
string secs_string = (seconds == 1) ? "second" : "seconds";

cout << "You have " << seconds << " "<< secs_string << " remaining." << endl;
// Output: You have 4 seconds remaining.
Run Code Online (Sandbox Code Playgroud)

请注意,使用a if需要在if语句之外对字符串进行单独声明,而使用三元表达式时,可以内联完成.


进一步阅读