第4课-布尔类型和引用

1. 布尔类型

  • C++中的布尔类型

    - C++在C语言的基本类型系统之上增加了bool

    - C++中bool可取的值只有truefalse

    - 理论上bool只占用一个字节

注意:

(1) true代表真值,编译器内部用1表示

(2) false代表非真值,编译器内部用0表示

 

2. 布尔类型的值

  • bool类型只有true(非0)和false(0)两个值

  • C++编译器会将非0值转换为true0值转换为false

#include <stdio.h>

int main()
{
    bool b = 0;
    
    printf("b = %d\n", b);    // b = 0
    
    b++;
    
    printf("b = %d\n", b);    // b = 1
    
    b = b - 3;
    
    printf("b = %d\n", b);    // b = 1
    
    return 0;
}

 

3. 布尔类型

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

    - 可以定义bool类型的全局变量

    - 可以定义bool类型的常量

    - 可以定义bool类型的指针

    - 可以定义bool类型的数组

    - 。。。

 

4. 三目运算符

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

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

    - 不能作为左值使用

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

    - 即可作为右值使用,也可作为左值使用

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

#include <stdio.h>

int main()
{
    int a = 1;
    int b = 2;
    
    (a < b ? a : b) = 3;
    
    printf("a = %d, b = %d\n", a, b);    // a = 3, b = 2
    
    return 0;
}

 

思考:

C++对三目运算符作了怎样的升级?这种升级有什么意义?

 

5. C++中的引用

  • 变量名回顾

    - 变量实际是一段连续存储空间的别名

    - 程序中通过变量来申请并命名存储空间

    - 通过变量的名字可以使用存储空间

 

 

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

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

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

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

int a = 4;

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

 

 

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

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

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

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

int a = 1;

int b = 2;

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

 

 

6. 小结

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

  • bool类型的值只能是truefalse

  • C++中的三目运算符可作为左值使用

  • C++中的引用可看作变量的别名来使用

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

 

本文出处:狄泰软件学院

 

posted @ 2020-03-10 23:09  WisdomMan  阅读(1)  评论(0)    收藏  举报