---- 整理自狄泰软件唐佐林老师课程
1. C++ 中的布尔类型
C++ 在 C 语言的基本类型系统之上 增加了 bool
C++ 中的 bool 可能的取值只有 true 和 false
理论上 bool 只占用 一个字节
- 注意:
- true代表真值,编译器内部用 1 来表示
- false代表非真值,编译器内部用 0 表示
- C++ 编译器会将 非 0 值 转换为 true, 0 值 转换为 false
#include <stdio.h>
int main(int argc, char *argv[])
{
bool b = false;
int a = b;
printf("sizeof(b) = %d\n", sizeof(b));
printf("b = %d, a = %d\n", b, a);
b = 3;
a = b;
printf("b = %d, a = %d\n", b, a);
b = -5;
a = b;
printf("b = %d, a = %d\n", b, a);
a = 10;
b = a;
printf("a = %d, b = %d\n", a, b);
a = 0;
b = a;
printf("a = %d, b = %d\n", a, b);
return 0;
}
- 布尔类型是 C++ 的基本数据类型
- 可以定义bool类型的全局变量、常量、指针、数组、…
2. 三目运算符
C++ 对三目运算符进行升级
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
(a < b ? a : b) = 3;
printf("b = %d, a = %d\n", b, a);
return 0;
}
C 语言 中的三目运算符返回的是 变量的值,不能作为左值使用
C++ 中的三目运算符 可直接返回变量本身,既可以作为右值使用,也可以作为左值使用
- 注意:
三目运算符可能返回的值中如果有一个是 常量值,则不能作为左值使用
3. C++ 中的引用
- 变量名回顾:
- 变量是 一段实际连续存储空间 的别名
- 程序中通过 变量 来申请并命名存储空间
- 通过 变量的名字 可以使用存储空间
3.1 问题
- 一段连续的存储空间只能有一个别名吗?
3.2 C++引用
- 引用可以看作一个 已定义变量的别名
- 引用的语法:
Type& name = var;
int a = 4;
int& b = a; // b 为 a 的别名
b = 5; // 操作 b 就是操作 a
- 注意:
普通引用 在定义时 必须 用 同类型的变量 进行初始化
下面的使用方法会报错:[Error] ‘b’ declared as reference but not initialized
int a = 4;
int& b;
b = a;
b = 5;
3.2.1 编程实验
#include <stdio.h>
int main()
{
int a = 4;
int& b = a; // b 为 a 的别名
b = 5; // 操作 b 就是操作 a
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("&a = %p\n", &a);
printf("&b = %p\n", &b);
return 0;
}
3.2.2 C++对三目运算符做了什么?
- 当三目运算符的 可能返回值 都是变量 时,返回的是 变量引用
- 当三目运算符的 可能返回中有 常量 时,返回的是 值,不能作为左值