C++学习笔记(三):布尔类型和引用

0x01 c++中的布尔类型

c++在C语言的基本类型系统之上增加了bool,其可取的值只有true和false;true代表真值,编译器内部用1来表示,同时会将非0值转化为true,false代表非真值,编译器内部用0来表示。

可以定义布尔类型的全局变脸、常量、指针、数组......

1. 通过上述的描述,来理解以下代码对应的输出结果:

#include <stdio.h>

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;
}

0x02 三目运算符

1. c++对三目运算符进行了以下升级:

c++中的三目运算符可直接返回变量本身,既可以作为左值使用,也可以作为右值使用。

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

int main(int argc, char *argv[])
{

	int a = 1;
	int b = 2;

	(a < b ? a : b) = 3;

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

	return 0;
}

0x03 C++中的引用

1. 在c++中新增加了引用的概念:

  • 引用可以看作一个已定义变量的别名
  • 引用的语法:Type& name = var;

普通引用在定义时必须使用同类型的变量进行初始化

代码示例:

#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 = 001EF7EC
&b = 001EF7EC
请按任意键继续. . .

2. c++对三目运算符做了什么?

  • 当三目运算符的返回值可能都是变量时,返回的是变量引用
  • 当三目运算符的返回值可能返回中有常量时,返回的是值
posted @ 2020-04-19 17:15  AskTa0  阅读(350)  评论(0编辑  收藏  举报