在 Lisp 中,可以计算任何表达式。C++ 采用了以下概念:“表达式”、“值”、“评估”。
如果您不了解“表达式”、“值”和“求值”之间的关系,请参考 C++ 标准 5.1。
我知道 ?: 是一个与 + 表达式相同的表达式。
任何表达式都必须能够被评估并给出一个值。然而?:
,表情似乎并不总是如此。
void f1() {}
void f2() {}
void test(bool b)
{
b ? f1() : f2(); // OK. What's the value of this expression?
}
任何表达式都应该有一个值;b ? f1() : f2();
是一个表达式;它的价值是什么?
有什么解释吗?
更新和我自己的答案:
摘自 C++ 标准 5.1:
表达式可能会产生一个值并可能导致副作用。