第4课 布尔类型和引用

1.  布尔类型

(1)C++在C语言的基本类型系统之上增加了bool,其可能的取值只有true(1)false(0)

(2)理论上bool只占用一个字节

(3)bool类型是基本类型,可以用来定义bool型的全局变量、常量、指针和数组等。

(3)C++编译器会将非0值转换true(即1)0值转换为false(即0)

【编程实验】布尔类型的使用

#include <stdio.h>

int main()
{
    bool b = false;
    int a = b;

    printf("sizeof(b) = %d
", sizeof(b)); //1
    printf("b = %d
, a = %d
", b, a);    //0, 0

    b = 3;  //编译器发现会bool型赋值非0,就会转化为1
    a = b;  //a为1

    printf("b = %d, a = %d
",b, a);
    
    b = -5; //非0,被转为1
    a = b;  //a为1

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

    a = 10; 
    b = a; //非0,被转为1

    printf("a = %d, b = %d
",a, b); //10,1

    a = 0; 
    b = a; //0

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

    return 0;     
}

2. 三目运算符的升级

(1)C语言中的三目运算符返回的是变量的值,因值不能作为左值使用

(2)C++中的三目运算符

  ①如果?后面的两个操作数有一个是常量,则行为与C语言的运算符一样,返回的是变量的值

  ②如果?后面的两个操作数都是变量,则返回变量的引用(相当于变量本身),如此,既可以作为右值也可作为左值使用

3. C++中的引用

(1)变量名的回顾

  ①变量是一段实际连续存储空间的别名,程序中通过变量来申请并命名存储空间

  ②通过变量的名字可以使用存储空间。(变量的名字就是变量的值&变量名是取地址操作

(2)C++中新增加了引用的概念

  ①引用可以看作一个己定义变量的别名

  ②引用的语法:Type& name = var; //Type为类型名name为引用的名字,var为己定义的变量名

  ③普通引用在定义时必须用同类型的变量进行初始化,函数参数引用的初始化发生在函数被调用时

【实例分析】引用初体验

#include <stdio.h>

int main()
{
    //引用初探
    int a = 4;
    int& b = a;//b为a的别名

    b = 5; //操作b就是操作a
    
    printf("a = %d
", a); //5
    printf("b = %d
", b); //5

    printf("&a = %p
", &a);
    printf("&b = %p
", &b);//&b等于&a

    //C++中的三目运算符
    int m = 1;
    int n = 2;
    
    printf("m = %d, n = %d
", m, n);

    (m < n ? m : n) = 3;//?后的m、n都是变量,返回的是引用,
                        //将3赋值给一个变量的引用,是合法的


    //(m < n ? m : 2) = 3;//?后的操作数2为常量,将返回的是值,
                        //从语义看,要将3赋值给2,是非法的

    printf("m = %d, n = %d
", m, n);

    //在C语言中,可通过其返回的是值的特点,可以通过如下方式来修改m或n
    *(m < n ?&m : &n) = 4;//返回m,n的地址,再通过地址给变量赋值,非法的。
    
    printf("m = %d, n = %d
", m, n);

    return 0;     
}

4. 小结

(1)bool类型是C++新增加的基础类型,其值只能是true或false

(2)C++中的三目运算符如果其可能的返回都是变量时,返回的是引用,可作为左值使用,

(3)C++中的引用可以看作变量的别名来使用

原文地址:https://www.cnblogs.com/5iedu/p/5366546.html