符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
今天我们来学习下 C++ 中的布尔类型。说起布尔类型,有的同学可能在 C 语言中听过,0 代表假,1 代表真。我们在 C 语言中用 int 类型的数来表示布尔类型,这也是可取的。但是在 C++ 中正式引出了布尔类型这个概念,它是一种基本类型。C++ 中的 bool 可取的值只有 true 和 false,理论上 bool 只占用一个字节。注意:true 代表真值,编译器内部用 1 来表示;false 代表非真值编译器内部用 0 来表示。
公司主营业务:成都网站建设、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出临江免费做网站回馈大家。
bool 类型只有 true(非0)和 false(0)两个值,C++ 编译器会将非 0 值转换为 true,0 值转换为 false。下来我们来以代码为例进行分析
#includeint main(int argc, char *argv[]) { bool b = false; int a = b; printf("sizeof(b) = %d\n", sizeof(b)); // 1 printf("b = %d, a = %d\n", b, a); // 0, 0 b = 3; a = b; printf("b = %d, a = %d\n", b, a); // 1, 1 b = -5; a = b; printf("b = %d, a = %d\n", b, a); // 1, 1 a = 10; b = a; printf("a = %d, b = %d\n", a, b); // 10, 1 a = 0; b = a; printf("a = %d, b = %d\n", a, b); // 0, 0 return 0; }
我们分析下,第 8 行打印 bool 类型 b 的内存大小,那么便是为 1 了。由于它初始化为 false ,所以为 0, a = b 当然也为 0 了;第 11 行 b 为非 0。所以第 14 行打印出 1, 1;第 16 行 b 为非 0。所以第 19 行打印出 1, 1;第 21 行 a 为 10,所以第 24 行打印出 10, 1;第 26 行 a 为 0,所以第 29 行打印出 0, 0啦。我们看看编译结果
因为布尔类型是 C++ 中的基本数据类型,所以我们可以定义 bool 类型的:局部变量、全局变量、常量、指针、数组 ... ; C++ 对三目运算符也进行了升级,在 C 语言中的三目运算符返回的是变量值,不能作为左值使用;但在 C++ 中,三目运算符可直接返回变量本身,所以它即可作为右值使用,又可作为左值使用。注意:三目运算符可能返回的值中如果有一个是常量值,则不能作为左值使用。
下来我们以代码为例进行分析
#includeint main(int argc, char *argv[]) { int a = 1; int b = 2; (a < b ? a : b) = 3; printf("a = %d, b = %d\n", a, b); return 0; }
这段代码在 gcc 中肯定编译通不过因为三目运算符返回的是变量值,给常量赋值肯定出问题,那么在 g++ 中,它可以通过,返回的是变量本身,所以第 8 行相当于 a = 3。我们来看看编译结果
我们看到 gcc 编译直接报错,但是 g++ 编译通过,并且成功的改变了 a 的值。在这块我们就不得不提变量名了,我们之前学过变量是一段实际连续存储空间的别名;程序中通过变量来申请并命名存储空间;通过变量的名字可以使用存储空间。我们再来想一个问题:一段连续的存储空间只能有一个别名吗?在 C++ 中新增了引用的概念。那么什么是引用呢?引用可以看作一个已定义变量的别名,它的语法格式是:TYpe& name = var;注意:普通引用在定义时必须同同类型的变量进行初始化。我们以代码为例进行分析
#includeint main(int argc, char *argv[]) { int a = 3; int& b = a; b = 5; printf("a = %d\n", a); printf("b = %d\n", b); printf("&a = %p\n", &a); printf("&b = %p\n", &b); return 0; }
我们看到在第 6 行进行了 a 的引用,也就是说, b 为 a 的别名,改变 b 的值就相当于改变 a 的值啦。我们看看编译结果
我们看到 a 和 b 都改为了 5,并且他俩的地址是一样的,也就证明了 b 是 a 的别名。那么回到之前的三目运算符的问题,当三目运算符的可能返回值都是变量时,返回的是变量引用;当三目运算符的可能返回值中有常量时,返回的是值。如下所示
通过对布尔类型和引用的学习,总结如下:1、bool 类型是 C++ 新增加的基础类型,它的值只能是 true 和 false;2、C++ 中的三目运算符可作为左值使用;3、C++ 中的引用可以看作变量的别名来使用;4、三目运算符的可能返回都是变量时,返回的是引用。
欢迎大家一起来学习 C++ 语言,可以加我QQ:243343083。