第4课 布尔类型与引用

本文内容取自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结

布尔类型

C++中的布尔类型

  • C++在C语言的基本类型系统之上增加了bool
  • C++中的bool可取的值只有truefalse
  • 理论上bool只占用一个字节

注意:
true代表真值,编译器内部用1表示
false代表非真值,编译器内部用 0来表示

布尔类型的值

  • bool类型只有true(非0)和false(0)两个值
  • C++编译器会将非0值转换为true0值转换为false

下面的代码输出什么?

bool b = 0;
printf("b = %d\n", b);
b++;
printf("b = %d\n", b);
b = b - 3;
printf("b = %d\n", b);

执行结果:
在这里插入图片描述
根据实验结果得出结论

布尔类型的变量,不为0便为1


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

  • 可以定义bool类型的全局变量
  • 可以定义bool类型的常量
  • 可以定义bool类型的指针
  • 可以定义bool类型的数组
  • 。。。


三目运算符

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

下面的代正确吗?

int a = 1;
int b = 2;

(a < b ? a : b) = 3;
printf("a = %d, b = %d\n", a, b);

执行结果
在这里插入图片描述

  • C语言中的三目运算符返回的是变量值

    不能作为左值使用

  • C++中的三目运算符可直接返回变量本身

    既可作为右值使用,又可作为左值使用

注意:
三目运算符可能返回的值中如果有一个
是常量值,则不能作为左值使用。



C++中的引用

变量名回顾

1.变量名是一段实际连续存储空间别名
2.程序中通过变量来申请并命名存储空间
3.通过变量的名字可以使用存储空间

问题:
一段连续的存储空间只能有一个别名吗?


在C++中新增加了引用的概念

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

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

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

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

    实例代码

     #include <stdio.h>
     int main(int argc, char *argv[])
     {
         int a = 4;
         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;
     }
    

执行结果
在这里插入图片描述

结论

a和b的值完全一样,地址也完全一样,所以引用b是a的别名

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

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

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

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



小结

  • bool类型是C++新增的基础类型
  • bool类型的值只能是truefalse
  • C++中的三目运算符可作为左值使用
  • C++中的引用可以看作变量的别名来使用
  • 三目运算符的可能返回都是变量时返回的是引用
发布了42 篇原创文章 · 获赞 0 · 访问量 997

猜你喜欢

转载自blog.csdn.net/lzg2011/article/details/104328269