C++深度解析 布尔类型bool 和 引用 &(3)

C++深度解析 布尔类型和引用(3)

1 布尔类型 bool

在C++中,bool类型只有true(非0)false(0)两个值,且bool类型只占用了一个字节

true:非0

false:0 

示例一:

#include <stdio.h>

int main(int argc, char *argv[])
{
    bool b = 0;
       
    printf("b = %d\n", b);
    
    b++;
    
    printf("b = %d\n", b);
    
    b = b - 3;
    
    printf("b = %d\n", b);
    
    return 0; 
}

结果如下:

在C++中,遇到布尔类型bool时,将bool类型当成一个只占用1个字节的整形数。

示例二:

#include <stdio.h>

int main(int argc, char *argv[])
{
    bool b = false;;
    int a = b;
    
    printf("sizeof(b) = %d\n", sizeof(b)); //1
    printf("b = %d, a = %d\n", b, a); //0, 0
    
    b = 3;
    a = b;
    
    printf("b = %d, a = %d\n", b, a); //1, 1
    
    b = -5;
    a = b;
    
    printf("b = %d, a = %d\n", b, a); //1, 1
    
    a = 10;
    b = a;
    
    printf("a = %d, b = %d\n", a, b); //10, 1
    
    a = 0;
    b = a;
    
    printf("a = %d, b = %d\n", a, b); //0, 0 
    
    return 0;
}

结果如下:

2 三目运算符

三目运算符即可作为右值使用,又可作为左值使用。

示例一:

#include <stdio.h>

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

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

结果如下:

示例二:

#include <stdio.h>

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

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

结果如下:

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

意义:如果三目运算符的返回都是变量的时候,返回的是变量的本身

3 引用

变量名的本质是存储空间的别名。

引用:已定义变量的别名

引用的语法: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;
}

结果如下:

在C++,完全可以对同一段连续的内存,起任意多的别名。

示例二:

#include <stdio.h>

int main(int argc, char *argv[])
{
    int a = 4;
    float& 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;
}

结果如下:

引用b的类型 必须和 变量a要一样。

小结:

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

bool类型的值只能是true(非0)和false(0)

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

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

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

猜你喜欢

转载自blog.csdn.net/xiaodingqq/article/details/85003473