第1个回答 2019-06-02
C++中?和:都不可以单独作为运算符,但是它们可以被用作条件运算符的一部分。条件运算符是三目运算符,其格式为"表达式1?表达式2:表达式3"。系统执行运算时,表达式1先求值,如果其值为非0,则对表达式2进行求值,并且将其作为条件运算的结果。如果表达式1的值为0,则对表达式3进行求值,并且将其作为条件运算的结果。
第2个回答 2019-03-19
1、C++中的“?”表示判断,可代替简单的if...else...语句。
2、而“:”表示前后不同条件下的返回值。
例:C++中的?和:为运算符。 Exp1 ? Exp2 : Exp3;
Exp1、Exp2 和 Exp3 是表达式,请注意冒号的使用和位置。
? : 表达式的值取决于 Exp1 的计算结果。
如果 Exp1 为真,则计算 Exp2 的值,且 Exp2 的计算结果则为整个 ? : 表达式的值。
如果 Exp1 为假,则计算 Exp3 的值,且 Exp3 的计算结果则为整个 ? : 表达式的值。
第3个回答 2019-02-17
C++中的“?”与“:”组合使用,表示“三目运算符”。三目运算符使用格式: 表达式1 ? 表达式2 : 表达式3。为方便理解和说明,这里用字母表示为:A ? B : C 。
三目运算的逻辑为:先计算A的值,如果A的值为真,则返回B的计算结果;如A的值为假,则返回C的计算结果。用一段简单的代码帮助理解,如下图所示:
上图中代码定义了整型变量a=10,b=11;求变量a和b那个更大,定义了一个max变量接收三目运算“a>b ? a : b”的结果,并打印出max的值。三目运算先计算“a>b”的值,显然此时a是小于b的,所以“a>b”为假,于是忽略了“?”后面的a,返回了“:”号后面b的值。
以上的三目运算逻辑与以下示例的if-else语句相同:
可以看出,使用三目运算符比使用if-else更加简洁。但也仅限于简化替代最简单的单分支if-else语句,多分支的if...else语句(如:if...else if...else)则无法使用三目运算符简化。
扩展补充:
三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,所以有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。