CPP学习之——三目运算符的问题(5.20-23)

一 概述

本节主要讲述三目运算符使用过程中的问题:

  • 三目运算符的优先问题
  • 三目运算符的使用问题
  • 三目运算符的型别问题
  • 三目运算符在字符型变量中的使用

二 三目运算符的优先问题

2.1 示例代码

1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;

int main() {
int a = 1, b = 2, z;
z = a > b ? a : (a > b ? a : b);
cout << "z:" << z << endl;

return 0;
}

2.2 代码分析

  • 那么这个式子的执行顺序究竟是怎样的呢?我们了解三目运算符的执行方向也就清楚了,三目运算符的执行方向依次为自右向左

三 三目运算符的使用问题

3.1 三目运算符的使用场景

  • 三目运算符究竟在哪些地方可以使用呢?我们来看一段代码:

3.2 代码

1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;

int main() {
int a=1,b=2;
if(a>b)
cout<<a;
else
cout<<b;
return 0;
}

3.3 三目运算符使用问题

  • 上面这段代码由于多了个cout输出命令,所以无法用三目运算符来代替
  • 我们发现三目运算符一般都是与赋值符"="打交道的,也就是说三目运算符一定要用在赋值语句里

四 三目运算符的型别问题

4.1 针对型别操作

  • 三目运算符允许对不同型别的数值进行操作,也就是说可以同时操作一个浮点型变量和一个整形变量

4.2 代码

1
2
3
4
5
6
7
8
9
#include<iostream>
using namespace std;
int main() {
int a = 1;
float b = 2.1;
cout << (a > b ? a : b);
return 0;
}

4.3 型别操作原因

  • 三目运算符将a和b的值都转换为它们之中最高级别的类型,也就是浮点数,跟着才对它们进行求值操作,求出浮点数b的值,也就是表达式的值。

五 三目运算符在字符型变量中的使用

5.1 需求

  • 该程序的目的是:用户输入一个大写字母后,将它转化为小写字母,如果输入的不是大写字母,则不变

5.2 代码

1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;
int main() {
char a;
cout<<"请输入要转化的字母:\n";
cin >> a;
cout << (a = (a >= 'A' && a <= 'Z') ? a + 32 : a) << endl;

return 0;

}

5.3 结果

1
2
3
请输入要转化的字母:
A
a