三目运算符
- 基本语法
- 运算符优先级
- T173076
- 输出绝对值
- 使用3目运算符
- 使用abs函数
基本语法
- C++中的三目运算符是一种条件运算符,其语法格式如下:
条件表达式 ? 表达式1 : 表达式2
这里的“条件表达式”是一个返回布尔值(true
或 false
)的表达式。如果条件表达式的结果为 true
,则整个三目运算符的结果为“表达式1”的结果;如果条件表达式的结果为 false
,则结果为“表达式2”的结果。
下面是一个简单的示例:
#include <iostream>int main() {int a = 10, b = 20;int max = (a > b) ? a : b;std::cout << "较大的数是: " << max << std::endl;return 0;
}
在这个例子中,(a > b)
是条件表达式,它检查 a
是否大于 b
。因为 a
不大于 b
,所以条件表达式的结果为 false
,因此 max
的值被设置为 b
的值。
三目运算符也可以嵌套使用,如下所示:
int x = 10, y = 20, z = 30;
int m = (x > y) ? x : (y > z) ? y : z;
在这个例子中,首先比较 x
和 y
,因为 x
不大于 y
,所以比较 y
和 z
,最后 m
被赋值为 z
的值。
需要注意的是,三目运算符的优先级低于逻辑运算符(&&
和 ||
),所以在包含这些运算符的复杂表达式中使用三目运算符时,需要使用括号来明确运算顺序。
运算符优先级
在C++中,运算符的优先级决定了表达式中各个部分的计算顺序。以下是C++中运算符的优先级列表,从最高到最低:
-
后置运算符:
- 成员访问(
.
和->
) - 后置递增(
++
) - 后置递减(
--
) - 函数调用(
()
) - 数组访问(
[]
)
- 成员访问(
-
一元运算符:
- 逻辑非(
!
) - 按位取反(
~
) - 负号(
-
) - 正号(
+
) - 前置递增(
++
) - 前置递减(
--
) - 类型转换(
(type)
) *
(解引用指针)&
(取地址)sizeof
- 逻辑非(
-
乘除和取模:
- 乘法(
*
) - 除法(
/
) - 取模(
%
)
- 乘法(
-
加减运算符:
- 加法(
+
) - 减法(
-
)
- 加法(
-
位移运算符:
- 左移(
<<
) - 右移(
>>
)
- 左移(
-
关系运算符:
- 小于(
<
) - 大于(
>
) - 小于等于(
<=
) - 大于等于(
>=
)
- 小于(
-
相等运算符:
- 等于(
==
) - 不等于(
!=
)
- 等于(
-
位运算符:
- 按位与(
&
) - 按位异或(
^
) - 按位或(
|
)
- 按位与(
-
逻辑运算符:
- 逻辑与(
&&
) - 逻辑或(
||
)
- 逻辑与(
-
条件运算符(三目运算符):
- 条件运算符(
? :
)
- 条件运算符(
-
赋值运算符:
- 赋值(
=
) - 复合赋值运算符(
+=
,-=
,*=
,/=
,%=
,<<=
,>>=
,&=
,^=
,|=
)
- 赋值(
-
逗号运算符:
- 逗号(
,
)
- 逗号(
- 请注意,赋值运算符的优先级低于所有其他运算符,这意味着在表达式中,赋值运算符总是在其他运算符之后执行。此外,逗号运算符的优先级最低,它用于分隔表达式列表,例如在函数调用中。
- 当表达式中包含多个具有相同优先级的运算符时,它们将从左到右进行计算。为了确保表达式按照预期执行,可以使用括号来改变运算顺序。
T173076
输出绝对值
- 题目描述
输入一个浮点数,输出这个浮点数的绝对值,保留到小数点后两位。
- 输入格式
输入一个浮点数,其绝对值不超过 10000 10000 10000 。
- 输出格式
输出这个浮点数的绝对值,保留到小数点后两位。
- 样例输入
-23.333
- 样例输出
23.33
使用3目运算符
#include <iostream>
#include<cstdio>
using namespace std;
int main() {double a;cin>>a;a= a<0?-a:a;printf("%.2lf\n",a);return 0;
}
使用abs函数
#include <iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int main() {double a;cin>>a;printf("%.2lf\n",abs(a));return 0;
}