1. 布尔类型
(1)C++在C语言的基本类型系统之上增加了bool,其可能的取值只有true(1)和false(0)
(2)理论上bool只占用一个字节
(3)bool类型是基本类型,可以用来定义bool型的全局变量、常量、指针和数组等。
(3)C++编译器会将非0值转换true(即1),0值转换为false(即0)
【编程实验】布尔类型的使用
#include <stdio.h> int main() { bool b = false; int a = b; printf("sizeof(b) = %d ", sizeof(b)); //1 printf("b = %d , a = %d ", b, a); //0, 0 b = 3; //编译器发现会bool型赋值非0,就会转化为1 a = b; //a为1 printf("b = %d, a = %d ",b, a); b = -5; //非0,被转为1 a = b; //a为1 printf("b = %d, a = %d ",b, a); //1,1 a = 10; b = a; //非0,被转为1 printf("a = %d, b = %d ",a, b); //10,1 a = 0; b = a; //0 printf("a = %d, b = %d ",a, b); //0,0 return 0; }
2. 三目运算符的升级
(1)C语言中的三目运算符返回的是变量的值,因值不能作为左值使用
(2)C++中的三目运算符
①如果?后面的两个操作数有一个是常量,则行为与C语言的运算符一样,返回的是变量的值。
②如果?后面的两个操作数都是变量,则返回变量的引用(相当于变量本身),如此,既可以作为右值,也可以作为左值使用。
3. C++中的引用
(1)变量名的回顾
①变量是一段实际连续存储空间的别名,程序中通过变量来申请并命名存储空间
②通过变量的名字可以使用存储空间。(变量的名字就是变量的值,&变量名是取地址操作)
(2)C++中新增加了引用的概念
①引用可以看作一个己定义变量的别名
②引用的语法:Type& name = var; //Type为类型名,name为引用的名字,var为己定义的变量名
③普通引用在定义时必须用同类型的变量进行初始化,函数参数引用的初始化发生在函数被调用时。
【实例分析】引用初体验
#include <stdio.h> int main() { //引用初探 int a = 4; int& b = a;//b为a的别名 b = 5; //操作b就是操作a printf("a = %d ", a); //5 printf("b = %d ", b); //5 printf("&a = %p ", &a); printf("&b = %p ", &b);//&b等于&a //C++中的三目运算符 int m = 1; int n = 2; printf("m = %d, n = %d ", m, n); (m < n ? m : n) = 3;//?后的m、n都是变量,返回的是引用, //将3赋值给一个变量的引用,是合法的 //(m < n ? m : 2) = 3;//?后的操作数2为常量,将返回的是值, //从语义看,要将3赋值给2,是非法的 printf("m = %d, n = %d ", m, n); //在C语言中,可通过其返回的是值的特点,可以通过如下方式来修改m或n *(m < n ?&m : &n) = 4;//返回m,n的地址,再通过地址给变量赋值,非法的。 printf("m = %d, n = %d ", m, n); return 0; }
4. 小结
(1)bool类型是C++新增加的基础类型,其值只能是true或false
(2)C++中的三目运算符如果其可能的返回都是变量时,返回的是引用,可作为左值使用,
(3)C++中的引用可以看作变量的别名来使用