第4课-布尔类型和引用

版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/qq_27513221/article/details/79829739

一、布尔类型

C++中的布尔类型

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

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

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

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

编程实验:布尔类型的使用

#include<iostream>

int main(int argc,char *argv[]){
    bool b = false;
    int a = b;

    printf("sizeof(b) = %d\n",sizeof(b));
    printf("b = %d,a = %d\n",b,a);

    b = 3;
    a = b;

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

    b = -5;
    a = b;

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

    a = 10;
    b = a;

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

    a = 0;
    b = a;

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

    return 0;
} 

打印结果:

sizeof(b) = 1
b = 0,a = 0
b = 1, a = 1
b = 1, a = 1
a = 10, b = 1
a = 0, b = 0

布尔类型是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++中的引用

变量名回顾

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

这里写图片描述

  • 在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 = 5
b = 5
&a = 000000000062FE44
&b = 000000000062FE44

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

  • 当三目运算符的可能返回都是变量时返回的是变量引用
  • 当三目运算符额可能返回中有常量时返回的是值
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++中的引用可以看作变量的别名来使用
  • 三目运算符的可能返回都是变量时返回的时引用

猜你喜欢

转载自blog.csdn.net/qq_27513221/article/details/79829739