c语言中的bool运算符,C++ bool、三目运算符、引用

本文深入探讨C++中的bool变量特点及应用,解析C++对三目运算符的改进及其背后的原理,并详细介绍C++中引用的概念及其用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bool变量:

C++相对于C语言加入了bool变量,其值为true(1) 和 false(0)。true表示不为零的数  false表示为零的数,占用一个字节的空间。

代码:

/* 编译环境

gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04)

*/

#include

int main(int argc, char *argv[])

{

printf("Begin...\n");

bool a = false;

int b = 10;

printf("bool size = %d\n",(int)sizeof(a));//打印bool变量的大小

/*a = 0 b = 10*/

printf("a = %d\t",a);

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

/*a = 1 b=1*/

a = b;

b = a;

printf("a = %d\t",a);

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

/*a = 0 b=0*/

b = 0;

a = b;

printf("a = %d\t",a);

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

/*a = 1 b =10*/

b+=10;

a = b;

printf("a = %d\t",a);

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

/*a = 1 b=1*/

a +=10;

b = a;

printf("a = %d\t",a);

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

printf("End...\n");

return 0;

}

运行结果:

布尔变量是C++的基本数据类型,支持运算,这样做是为了兼容C语言。但是编译器会吧计算的结果还原成一个bool值。

可以定义为 常量、全局变量、常量、指针、数组...

C++对三目运算符的改进:

测试代码:

#include

int main(int argc, char *argv[])

{

printf("Begin...\n");int a = 5;int b = 2;

(a< b ? a:b) = 10; //运行结果 b=10 a=5//(a < b ? a:1) = 10;//将会报错

printf("a = %d\t",a);

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

printf("End...\n");return 0;

}

在 C语言编译器中运行结果

提示,左值错误

使用C++编译器

未报错 正常运行。

当 可能返回值中出现常量时,所报的错误与 C 中错误一致。

C 语言中 不允许 三目运算符为左值 。例如 (a

C++中对三目运算符做出了增强,允许在三目运算符为左值,但是可能返回值种不能出现常量。因为常量不能等于另外一个常量。C++之所以能够这样操作是因为C++增加了一个“引用”的概念

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

——当三目运算符的可能返回是变量的时候,返回的是一个引用。

——当三目运算符的可能返回是常量的时候,返回的是一个常量

C++的 引用:

测试代码:

#include

int main(int argc, char *argv[])

{

printf("Begin...\n");int a = 10;int &b =a;//int &b = 1;//报类型错误//float &b = a;//报类型错误

printf("a = %d\t",a); //运行结果 a = b = 10 a的地址 = b的地址

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

printf("a = 0x%p\t",&a);

printf("b = 0x%p\n",&b);return 0;

}

测试1:

a = 10; b = 10; 而且a 与 b的地址相同。

测试2:

证明:引用的类型不能是常量。

测试3:

由于C++语言是一个强类型的语言,对类型检查相当严格,所以使用一个float型的变量去 引用一个int 型的变量 是不允许的。

“引用”可以看成一个已经定义变量的 别名。引用语法  Type & name = var;

例如:int a = 5;

int &b =a;

b = 10;

上面的代码运行后,a = 10; b = 10; 而且a 与 b的地址相同。所以通过上述特性 在C++中一个变量是可以有多个 不同的名字的。(也就是说一个内存空间是可以有多个名字的,这个多个名字指向同一个内存空间)。

由于 C++是一个强类型语言,在对类型检查的过程中,如果类型不同将会报错。所以普通引用在定义时必须用同类型的变量进行初始化。

小结:

bool类型是C++增加的一个新的基础类型

bool类型的值只能是 false  或者 true

C++的三目运算符可以作为左值

C++的yiny可以看做变量的别名来使用

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值