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;

 bool b = ;  // 兼容 C,合法;

 printf("b = %d\n", b);  // b = 0;

 b++;  // 为了支持 C 语言,bool 类型支持数学运算;

 printf("b = %d\n", b);  // b = 1;

 b = b - ;  

 printf("b = %d\n", b);  // b = 1;

3,布尔类型的使用变成实验:

1,main.cpp 文件:

 #include <stdio.h>

 int 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 = ;
a = b; printf("b = %d, a = %d\n", b, a); // 1,1; b = -;
a = b; printf("b = %d, a = %d\n", b, a); // 1,1; a = ;
b = a; printf("a = %d, b = %d\n", a, b); // 10,1; a = ;
b = a; printf("a = %d, b = %d\n", a, b); // 0,0; return ;
}

4,布尔类型是 C++ 中的基本数据类型:

1,可以定义 bool 类型的全局变量;

2,可以定义 bool 类型的常量;

3,可以定义 bool 类型的指针;

4,可以定义 bool 类型的数组;

5,...;

5,C++ 中的三目运算符(运算符当中被明显升级的):

1,C++ 对三目运算符进行了升级:

 int a = ;
int b = ; (a < b ? a : b) = ; // C 中三目运算符不能当做左值使用;error: lvalue(左值) required as left operand of assignment // (a < b ? a : 2) = 3; // C++ 中报错; error: lvalue(左值) required as left operand of assignment 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,代码如下:

 int a = ;
int& b = a; // b 为 a 的别名; b = ; // 操作 b 就是操作 a;

2,引用可以看做一个已定义变量的别名;

1,可以引用无数个别名;

3,引用的语法:Type& name = var;

1,“&”标明标识符 name 是引用,是变量 var 别名;

2,name 的类型必须和 var 相同;

4,普通引用在定义时必须用同类型的变量进行初始化;

1,引用是别名,要给编译器说明;

2,强类型;

8,引用初体验实例分析:

1,main.cpp 文件:

 #include <stdio.h>

 int main(int argc, char *argv[])
{
int a = ;
int& b = a; // float& b = a; // error: invalid initialization of reference of type 'float&' from expression of type 'int'; // float& b; // error: 'b' declared as reference but not initalized; // float& b = 1; // 1 就是 1,不需要别名,对 const 引用例外;
// error: invalid initialization of non-const(非常量) reference of type 'float&' from a temporary(暂时的) of type 'int'; b = ; printf("a = %d\n", a); // a = 5;
printf("b = %d\n", b); // b = 5;
printf("&a = %p\n", &a); // &a = 0xbfe54aec;
printf("&b = %p\n", &b); // &b = 0xbfe54aec; return ;
}

9,C++ 对三目运算符做了什么?

1,代码如下:

 int a = ;
int b = ; (a < b ? a : b) = ; // 正确,返回 a 或 b 的引用,可作为左值;
(a < b ? : b) = ; // 错误,返回 1 或 b 的值,不能作为左值;

2,当三目运算符的可能返回值都是变量时,返回的是变量引用;

3,当三目运算符的可能返回中有常量时,返回的是值;

10,小结:

1,bool 类型是 C++ 新增加的基础类型;

2,bool 类型的值只可能是 true 和 false;

3,C++ 中的引用可以看做变量的别名来使用(返回引用时);

4,C++ 中的三目运算符可以作为左值使用;

5,三目运算符的可能返回都是变量时,返回的是引用;

C++中的布尔类型和引用的更多相关文章

  1. 【C语言】中的布尔类型

    C语言中的布尔类型 一.相关基础知识 首先bool  true  false为C++中的关键字,C语言中默认不支持这几个字符! 二.具体内容 在C89 (ANSI C)标准中没有定义与布尔类型相关的内 ...

  2. DSP程序中的布尔类型使用

    在DSP程序中,布尔类型不能直接拿来用,要定义一下,可以通过定义为枚举类型来定义: typedef enum{FALSE=0,TRUE} BOOL; 一般枚举类型的定义是这样的:enum [枚举名] ...

  3. python基础语法_python中的布尔类型详解

    转自:http://www.cnblogs.com/521yywzyzhc/p/6264885.html   我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是 ...

  4. [整理]标准C中的"布尔"类型

    C语言提供的基本数据类型:char , int ,float, double. 为什么没有其他语言中常见bool布尔数据类型呢? 1.在标准C语言(ANSI C)中并没有bool数据类型 标准C中,表 ...

  5. 2.C++中的bool类型,三目运算符,引用

    本章主要内容: 1)bool类型 2)三目运算符 3)引用 1.布尔型bool 在C++中,bool类型只有true(非0)和flase(0)两个值,且bool类型只占用了一个字节. 例如: #inc ...

  6. Odoo “坑” 系列之 XML中的布尔类型

    在Odoo中试图通过XML方式更新某条Record的值,却意外发现根本不能更新,经查,对于XML中Boolean类型的字段,更新的方式应该采用eval的方式.

  7. 字符串0.在php和js中转换为布尔类型 值是false还是true

    在php 中 $a = '0'; $b = (bool)$a; var_dump($a);//输出false 在js中官方说明: Note:If the value parameter is omit ...

  8. html中属于布尔类型的属性

    1.noshade,用来表示有无阴影,多用于在<hr />标签当中 2.ckecked,用来表示是否默认选中,多用于单选按钮<input type="radio" ...

  9. jquery中使用布尔类型数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. HTML文档流和脱离文档流

    文档流:也就是我们通常看到的由左到右.由上而下的元素排列形式,在网页中每个元素都是默认按照这个顺序进行排序和显示的. 脱离文档流:元素脱离文档流之后,将不再在文档流中占据空间,而是处于浮动状态(可以理 ...

  2. [书接上一回]在Oracle Enterprise Linux (v5.7) 中安装DB - (3/4)

    安装p10404530_112030_Linux-x86-64_6of7.zip解压下的example. 修改软件路径,为dbhome_1. 安装好数据,则可以进行快照操作! 删除安装文件. 输入db ...

  3. VirtualBox中安装CentOS 7

    1.如下所示图,点击“新建”,创建一个新的虚拟机 2.类型选择Linux,版本选择Red Hat,下一步 3.分配内存大小,电脑8G内存,所以分给虚拟机2G,选择下一步 4.选择“现在创建虚拟硬盘” ...

  4. SVG 学学就会了。

    SVG 随便学学就会了 这两天闲来没事把 Echart 换成 Rechart 感觉世界都清爽了.因为 rechart 使用 svg 来渲染,所以顺带学了下 SVG 感觉很轻松哦. 概念 SVG 是 w ...

  5. shelve模块 xml模块

    # import shelve# f=shelve.open('db.shl')# # f['stu1']={'name':'alex1','age':28}# # f['stu2']={'name' ...

  6. Web核心之JSP

    JSP JSP = HTML + Java + JSP自己的一些语法 JSP也是一个动态网页开发技术. JSP本质 Jsp实际上就是一个Servlet,在jsp被访问时,tomcat会把jsp转换为一 ...

  7. 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 I. Reversion Count (java大数)

    Description: There is a positive integer X, X's reversion count is Y. For example, X=123, Y=321; X=1 ...

  8. CF 1182F Maximum Sine——根号算法

    题目:http://codeforces.com/contest/1182/problem/F 注意有绝对值. 那么就是 k*p 对 q 取模,找最接近 \(\frac{q}{2}\) 的结果. 也就 ...

  9. bzoj1964: hull 三维凸包

    传送门 二维平面四个点求凸包面积->任选三个点面积之和/2 三维平面五个点求凸包体积->任选四个点体积之和/2 二维平面三个点面积->二个二维向量行列式值的绝对值/2 三维平面四个点 ...

  10. innobackupex对MySQL做热备份,报错mysql库下数据字典表损坏

    [root@node1 op]#mysql -Vmysql Ver 14.14 Distrib 5.6.29innobackupex热备份MySQL报错,报错信息:[root@node1 op]#in ...