zoukankan      html  css  js  c++  java
  • 第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++中的引用可以看作变量的别名来使用

  • 相关阅读:
    魔兽世界祭拜长者
    Mono嵌入C++
    kxb-shell文件操作-kxb
    GAN初步理解
    Pytorch 常用函数方法的理解
    转载:StyleGAN & StyleGAN2 论文解读
    RepVGG
    多目标跟踪,REID, JDE跟踪器解析
    卷积和反卷积详细说明
    FairMOT解析
  • 原文地址:https://www.cnblogs.com/5iedu/p/5366546.html
Copyright © 2011-2022 走看看