1 c++ 之布尔类型和引用的学习总结-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

c++ 之布尔类型和引用的学习总结

电子设计 来源:电子设计 作者:电子设计 2020-12-24 18:03 次阅读

一、布尔数据类型:

c语言里面我们知道是没有布尔数据类型的,而在C++中添加了布尔数据类型(bool),它的取值是:true或者false(也就是1或者0),在内存大小上它占用一个字节大小:

1、bool类型只有true(非0)和false(0)两个值。

2、C++编译器会将非0值转换为true,0值转换为false。

#include <stdio.h>

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

bool b = false;

int a = b;

printf("sizeof(b) = %d", sizeof(b));

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

b = 3;

a = b;

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

b = -5;

a = b;

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

a = 10;

b = a;

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

a = 0;

b = a;

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

return 0;

演示结果:

root@txp:/home/txp# ./a.out

sizeof(b) = 1

b = 0, a = 0

b = 1, a = 1

b = 1, a = 1

a = 10, b = 1

a = 0, b = 0

2、C++中的三目运算符:

对三目运算符,想必大家都再熟悉不过了,不过在c++中的三目运算符的用法就比c语言更加高级了,来先看一个示例:

int a = 1;

int b = 2;

( a < b) ? a : b = 3;

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

上面的三目运算符语句看起来怎么有点奇怪,它作为左值了,一般在c语言里面它应该是作为右值赋值给一个变量的,那这样写在c++中有没有错误,答案肯定是没有错的,我们还是来看一下这种写法在c语言中报了啥错误:

root@txp:/home/txp# gcc test.c

test.c: In function ‘main’:

test.c:7:21: error: lvalue required as left operand of assignment

( a < b) ? a : b = 3;

这里我们可以发现它不能做为左值来对它进行赋值,而我们在c++编译器里面来编译,很明显它是没有错误的,行的通,那我们再来修改一下:

#include <stdio.h>

int main(void)

int a = 1;

int b = 2;

( a < b) ? a : 4 = 3;

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

编译结果(这个错误和在c语言里面一样,注意这里我是在C++编译器里面编译,只是把三目运算符里面修改了一下。):

root@txp:/home/txp# g++ test1.cpp

test1.cpp: In function ‘int main()’:

test1.cpp:7:23: error: lvalue required as left operand of assignment

( a < b) ? a : 4 = 3;

小结:

1、c语言里面的三目运算符返回的是变量值,它不能作为左值来使用。

2、c++中的三目运算符可以直接返回变量本身,既可以作为右值使用,也可以作为左值来使用。

3、c++中的三目运算符可能返回的值中如果有一个是常量值,则不能作为左值进行使用,这点要切记和理解。

二、C++中的引用:

1、引用的概念:

--引用可以看作一个已定义变量的别名

--引用的语法:Type &name = var;这里举个简单的示例:

int a =4;

int& b =a; //b为a的别名

b = 5;//操作b就是操作a

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

下面是demo演示:

#include <stdio.h>

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

int a = 4;

int& b = a;

b = 5;

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

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

printf("&a = %p", &a);

printf("&b = %p", &b);

return 0;

演示结果:

root@txp:/home/txp# ./a.out

a = 5

b = 5

&a = 0x7fff408ffdec

&b = 0x7fff408ffdec

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 可编程逻辑
    +关注

    关注

    7

    文章

    515

    浏览量

    44081
  • C++
    C++
    +关注

    关注

    22

    文章

    2108

    浏览量

    73617
收藏 人收藏

    评论

    相关推荐

    运动控制卡周期上报实时数据IO状态C++

    使用C++进行运动控制卡的周期上报功能实现
    的头像 发表于 12-17 13:59 141次阅读
    运动控制卡周期上报实时数据IO状态<b class='flag-5'>之</b><b class='flag-5'>C++</b>篇

    同样是函数,在CC++中有什么区别

    同样是函数,在 CC++ 中有什么区别? 第一个返回值。 C语言的函数可以不写返回值类型,编译器会默认为返回 int。 但是 C++
    的头像 发表于 11-29 10:25 264次阅读

    C7000 C/C++优化指南用户手册

    德赢Vwin官网 网站提供《C7000 C/C++优化指南用户手册.pdf》资料免费下载
    发表于 11-09 15:00 0次下载
    <b class='flag-5'>C</b>7000 <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>优化指南用户手册

    TMS320C6000优化C/C++编译器v8.3.x

    德赢Vwin官网 网站提供《TMS320C6000优化C/C++编译器v8.3.x.pdf》资料免费下载
    发表于 11-01 09:35 0次下载
    TMS320<b class='flag-5'>C</b>6000优化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>编译器v8.3.x

    C语言和C++中结构体的区别

    同样是结构体,看看在C语言和C++中有什么区别?
    的头像 发表于 10-30 15:11 197次阅读

    C7000优化C/C++编译器

    德赢Vwin官网 网站提供《C7000优化C/C++编译器.pdf》资料免费下载
    发表于 10-30 09:45 0次下载
    <b class='flag-5'>C</b>7000优化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>编译器

    鸿蒙原生应用元服务开发-仓颉基础数据类型布尔类型

    布尔类型使用Bool 表示,用来表示逻辑中的真和假。 布尔类型字面量 布尔类型只有两个字面量:t
    发表于 09-09 09:57

    OpenVINO2024 C++推理使用技巧

    很多人都使用OpenVINO新版的C++ 或者Python的SDK,都觉得非常好用,OpenVINO2022之后的版本C++ SDK做了大量的优化与整理,已经是非常贴近开发的使用习惯与推理方式。与OpenCV的Mat对象对接方式更是几乎无缝对接,非常的方便好用。
    的头像 发表于 07-26 09:20 873次阅读

    C++语言基础知识

    德赢Vwin官网 网站提供《C++语言基础知识.pdf》资料免费下载
    发表于 07-19 10:58 7次下载

    C++中实现类似instanceof的方法

    C++有多态与继承,但是很多人开始学习C++,有时候会面临一个常见问题,就是如何向下转型,特别是不知道具体类型的时候,这个时候就希望C++
    的头像 发表于 07-18 10:16 572次阅读
    <b class='flag-5'>C++</b>中实现类似instanceof的方法

    鸿蒙OS开发实例:【Native C++

    使用DevEco Studio创建一个Native C++应用。应用采用Native C++模板,实现使用NAPI调用C标准库的功能。使用C标准库hypot接口计算两个给定数平方和的平
    的头像 发表于 04-14 11:43 2591次阅读
    鸿蒙OS开发实例:【Native <b class='flag-5'>C++</b>】

    使用 MISRA C++:2023® 避免基于范围的 for 循环中的错误

    在前两篇博客中,我们 向您介绍了新的 MISRA C++ 标准 和 C++ 的历史 。在这篇博客中,我们将仔细研究以 C++ 中 for 循环为中心的特定规则。
    的头像 发表于 03-28 13:53 782次阅读
    使用 MISRA <b class='flag-5'>C++</b>:2023® 避免基于范围的 for 循环中的错误

    c语言,c++,java,python区别

    操作系统、嵌入式系统等对性能要求较高的场景。C语言的语法相对简单,学习曲线较平缓,也是学习其他高级语言的入门语言。 C++C++是在
    的头像 发表于 02-05 14:11 2359次阅读

    vb语言和c++语言的区别

    Microsoft开发的一种面向对象的事件驱动编程语言。它的设计目标是简化编程过程,让初学者也能快速上手。与相比,C++语言是一种通用的、面向对象的编程语言,其设计目标是提供高性能的系统级编程。 语法: VB语言的语法较为简单,使用了很多可读性强的关键词,如“
    的头像 发表于 02-01 10:20 2252次阅读

    C++简史:C++是如何开始的

    MISRA C++:2023,MISRA® C++ 标准的下一个版本,来了!为了帮助您做好准备,我们介绍了 Perforce 首席技术支持工程师 Frank van den Beuken 博士撰写
    的头像 发表于 01-11 09:00 577次阅读
    <b class='flag-5'>C++</b>简史:<b class='flag-5'>C++</b>是如何开始的