布尔类型
-
C++中的布尔类型
- C++在C语言的基本类型系统之上增加了bool
- C++中的bool可取的值只有true 和 false
- 理论上bool只占用一个字节
-
布尔类型是C++中的基本数据类型
- 可以定义bool类型的全局变量
- 可以定义bool类型的常量
- 可以定义bool类型的指针
- 可以定义bool类型的数组
三目运算符
- 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);
}
- C语言编译:
t4-1.c: In function ‘main’:
t4-1.c:6:21: error: lvalue required as left operand of assignment
(a < b ? a : b) = 3;
- C++编译:
正常运行: a=3, b = 2
原因分析
- C语言中的三目运算符返回的是变量值
- 不能作为左值使用
- C++中的三目运算符可直接返回变量本身
- 既可作为右值使用,又可作为左值使用
注意: 三目运算符可能返回的值如果有一个是常量值,则不能作为左值使用.
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的值,不能作为左值
小结
- bool 类型是C++新增加的基本类型
- bool 类型的值只能是true和false
- C++中的三目运算符可作为左值使用
- C++中的引用可以看做变量的别名来使用
- 三目运算符的可能返回都是变量时,返回的是引用