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++对三目运算符做了什么?
- 当三目运算符的返回值可能都是变量时,返回的是变量引用
- 当三目运算符的返回值可能返回中有常量时,返回的是值
~欢迎各位师傅关注我的公众号哟~