第4课-布尔类型和引用
1. 布尔类型
- C++中的布尔类型
- C++在C语言的基本类型系统之上增加了bool
- C++中bool可取的值只有true和false
- 理论上bool只占用一个字节
注意:
(1) true代表真值,编译器内部用1表示
(2) false代表非真值,编译器内部用0表示
2. 布尔类型的值
-
bool类型只有true(非0)和false(0)两个值
-
C++编译器会将非0值转换为true,0值转换为false
#include <stdio.h> int main() { bool b = 0; printf("b = %d\n", b); // b = 0 b++; printf("b = %d\n", b); // b = 1 b = b - 3; printf("b = %d\n", b); // b = 1 return 0; }
3. 布尔类型
- 布尔类型是C++中的基本数据类型
- 可以定义bool类型的全局变量
- 可以定义bool类型的常量
- 可以定义bool类型的指针
- 可以定义bool类型的数组
- 。。。
4. 三目运算符
-
C++对三目运算符进行了升级
-
C语言中的三目运算符返回的是变量值
- 不能作为左值使用
- C++中的三目运算符可直接返回变量本身
- 即可作为右值使用,也可作为左值使用
注意:三目运算符可能返回的值中如果有一个是常量值,则不可作为左值使用
#include <stdio.h> int main() { int a = 1; int b = 2; (a < b ? a : b) = 3; printf("a = %d, b = %d\n", a, b); // a = 3, b = 2 return 0; }
思考:
C++对三目运算符作了怎样的升级?这种升级有什么意义?
5. C++中的引用
- 变量名回顾
- 变量实际是一段连续存储空间的别名
- 程序中通过变量来申请并命名存储空间
- 通过变量的名字可以使用存储空间
问题:一段连续存储空间的只能有一个别名吗?
- 在C++中新增了引用的概念
- 引用可以看作一个已定义变量的别名
- 引用的语法:Type& name = var;
int a = 4; int& b = a; // b为a的别名 b = 5; // 操作b就是操作a
注意:普通引用在定义时必须用同类型的变量初始化
- C++对三目运算符做了什么?
- 当三目运算符的可能返回都是变量时,返回的是变量的引用
- 当三目运算符的可能返回中有常量时,返回的是值
int a = 1; int b = 2; (a < b ? a : b) = 3; // 正确,返回a或b的引用,可作为左值 (a < b ? 1 : b) = 4; // 错误,返回1或b的值,不能作为左值
6. 小结
-
bool类型是C++新增加的基础类型
-
bool类型的值只能是true和false
-
C++中的三目运算符可作为左值使用
-
C++中的引用可看作变量的别名来使用
-
三目运算符的可能返回都是变量时,返回的是引用
本文出处:狄泰软件学院