在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1,C++ 中的布尔类型: 1,C++ 在 C 语言的基础类型系统之上增加了 bool; 1,C 语言中,没有 bool 类型存在,往往都是用整型代替 bool 类型,常用 0 表示假,用 1 表示真; 2,bool 本来就有这样的类型,但是在 C 语言中却没有这样的对应基本类型,所以只有使用整型代替 bool 类型,但是不严谨; 3,这也是 C++ 中的 “+” 的体现; 2,C++ 中的 bool 可能的值只有 true 和 false; 1,true 代表真值,编译器内部用 1 来表示(但是会将非 0 值也转换为 true 而变为 1 存储); 2,false 代表非真值,编译器内部用 0 来表示; 3,理论上 bool 只占用一个字节;
2,bool 类型只有 true(非 0)和 false(0)两个值; C++ 编译器会将非 0 值转换为 true,0 值转换为 false; 1 bool b = 0; // 兼容 C,合法; 2 3 printf("b = %d\n", b); // b = 0; 4 5 b++; // 为了支持 C 语言,bool 类型支持数学运算; 6 7 printf("b = %d\n", b); // b = 1; 8 9 b = b - 3; 10 11 printf("b = %d\n", b); // b = 1;
3,布尔类型的使用变成实验: 1,main.cpp 文件: 1 #include <stdio.h> 2 3 int main(int argc, char *argv[]) 4 { 5 bool b = false; 6 int a = b; 7 8 printf("sizeof(b) = %d\n", sizeof(b)); // 1; 9 printf("b = %d, a = %d\n", b, a); // 0,0; 10 11 b = 3; 12 a = b; 13 14 printf("b = %d, a = %d\n", b, a); // 1,1; 15 16 b = -5; 17 a = b; 18 19 printf("b = %d, a = %d\n", b, a); // 1,1; 20 21 a = 10; 22 b = a; 23 24 printf("a = %d, b = %d\n", a, b); // 10,1; 25 26 a = 0; 27 b = a; 28 29 printf("a = %d, b = %d\n", a, b); // 0,0; 30 31 return 0; 32 }
4,布尔类型是 C++ 中的基本数据类型: 1,可以定义 bool 类型的全局变量; 2,可以定义 bool 类型的常量; 3,可以定义 bool 类型的指针; 4,可以定义 bool 类型的数组; 5,...;
5,C++ 中的三目运算符(运算符当中被明显升级的): 1,C++ 对三目运算符进行了升级: 1 int a = 1; 2 int b = 2; 3 4 (a < b ? a : b) = 3; // C 中三目运算符不能当做左值使用;error: lvalue(左值) required as left operand of assignment 5 6 // (a < b ? a : 2) = 3; // C++ 中报错; error: lvalue(左值) required as left operand of assignment 7 8 printf("a = %d, b = %d\n", a, b); // C++ 中,a = 3,b = 2; 2,C 语言中的三目运算符返回的是变量值; 1,不能作为左值使用; 3,C++ 中的三目运算符可直接返回变量本身; 1,既可作为右值使用,又可作为左值使用; 4,三目运算符可能返回的值中如果有一个是常量值,则不能作为左值使用;
6,C++ 对三目运算符做了怎样的升级?这种升级的意义是什么? 1,三目运算符如果可能的返回全部为变量,则它返回的是变量本身; 2,意味着引用;
7,C++ 中的引用: 1,变量名回顾:
1,变量是一段实际连续存储空间的别名; 2,程序中通过变量来申请并命名存储空间; 3,通过变量的名字可以使用存储空间; 2,一段连续的存储空间只能有一个别名吗? 1,不一定,例如人的名字可以有多个; 3,在 C++ 中新增加了引用的概念: 1,代码如下: 1 int a = 4; 2 int& b = a; // b 为 a 的别名; 3 4 b = 5; // 操作 b 就是操作 a; 2,引用可以看做一个已定义变量的别名; 1,可以引用无数个别名; 3,引用的语法:Type& name = var; 1,“&”标明标识符 name 是引用,是变量 var 别名; 2,name 的类型必须和 var 相同; 4,普通引用在定义时必须用同类型的变量进行初始化; 1,引用是别名,要给编译器说明; 2,强类型;
8,引用初体验实例分析: 1,main.cpp 文件: 1 #include <stdio.h> 2 3 int main(int argc, char *argv[]) 4 { 5 int a = 4; 6 int& b = a; 7 8 // float& b = a; // error: invalid initialization of reference of type 'float&' from expression of type 'int'; 9 10 // float& b; // error: 'b' declared as reference but not initalized; 11 12 // float& b = 1; // 1 就是 1,不需要别名,对 const 引用例外; 13 // error: invalid initialization of non-const(非常量) reference of type 'float&' from a temporary(暂时的) of type 'int'; 14 15 b = 5; 16 17 printf("a = %d\n", a); // a = 5; 18 printf("b = %d\n", b); // b = 5; 19 printf("&a = %p\n", &a); // &a = 0xbfe54aec; 20 printf("&b = %p\n", &b); // &b = 0xbfe54aec; 21 22 return 0; 23 }
9,C++ 对三目运算符做了什么? 1,代码如下: 1 int a = 1; 2 int b = 2; 3 4 (a < b ? a : b) = 3; // 正确,返回 a 或 b 的引用,可作为左值; 5 (a < b ? 1 : b) = 4; // 错误,返回 1 或 b 的值,不能作为左值; 2,当三目运算符的可能返回值都是变量时,返回的是变量引用; 3,当三目运算符的可能返回中有常量时,返回的是值;
10,小结: 1,bool 类型是 C++ 新增加的基础类型; 2,bool 类型的值只可能是 true 和 false; 3,C++ 中的引用可以看做变量的别名来使用(返回引用时); 4,C++ 中的三目运算符可以作为左值使用; 5,三目运算符的可能返回都是变量时,返回的是引用; |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论