栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

布尔类型和引用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

布尔类型和引用

C++中的布尔类型:
C++在C语言的基本类型系统上增加了bool
C++中的bool可能的值只有true和false
理论上bool只占用一个字节
注意:
true,编译器内部用1来表示
false,编译器内部用0来表示

布尔类型的值
bool类型只有true(非0)和false(0)两个值
C++编译器会将非0值转换为true,0值转换为false
C++编译器内部将bool看做一字节的整形数进行计算,并将最终结果进行转换,非0值转换为1,0值转换为0

下面的代码输出什么?
//bool b = false;
bool b = 0;
printf("b = %dn",b);  // = 0
b++; //1
printf("b = %dn",b);  // = 1
b = b-3;  //-2
printf("b = %dn",b);  // = 1

布尔类型是C++中的基本数据类型:
可以定义bool类型的全局变量
可以定义bool类型的常量
可以定义bool类型的指针
可以定义bool类型的指针
可以定义bool类型的数组

C++对三目运算符进行了升级
下面的代码正确吗?
C语言中的三目运算符返回的是变量值
不能作为左值使用
C++中的三目运算符可直接返回变量本身
既可以作为右值使用,又可以作为左值使用
注意:
三目运算符可能返回的值中如果有一个是常量值,则不能作为左值使用

int a = 1;
int b = 2;

(a < b ? a : b) = 3;  //a = 3  C++环境
//(a < b ? a : 2) = 3;  //a = 3  //编译错误,返回值中有一个是常量值,错误

printf("a = %d, b = %dn",a,b);

C++中的引用
变量名:变量是一段连续存储空间的别名
问题:
一个连续的存储空间只能有一个别名吗?

在C++中新增了引用的概念
引用可以看作一个已定义变量的别名
引用的语法:Type& name = var;
C++中的引用可以看作变量的别名来使用

int a = 4;
int* b = a; // b为a的别名
b = 5;  //操作b就是操作a

float& b = a; //编译器错误,类型不匹配

float& b;//错误,引用没有初始化

float& b = 1;  //错误,1是字面常量

注意:
普通引用在定义是必须用同类型的变量进行初始化

C++对三目运算符做了什么?
当三目运算符的可能返回都是变量时,返回的是变量引用
当三目运算符的可能返回中有常量时,返回的是值

int a = 1;
int b = 2;

(a < b ? a : b) = 3;  //**正确,返回a或b的引用,可作为左值**
//(a < b ? a : 2) = 3;  //a = 3  //**错误,返回1或b的值,不能作为左值**
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529697.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号