C++ 中的布尔类型
bool
bool
可取的值只有 true
和 false
bool
只占用一个字节注意:
true
代表真值,编译器内部用 1 来表示false
代表非真值,编译器内部用 0 来表示布尔类型的值
bool
类型只有 true
(非 0)和 false
(0)两个值true
,0 值转换为 false
布尔类型的使用示例
Demo
#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; //b = true;
a = b; //a = 1
printf("b = %d, a = %d\n", b, a); //1,1
b = -5; //b = true
a = b; //a = 1
printf("b = %d, a = %d\n", b, a); //1,1
a = 10;
b = a; //b = false
printf("a = %d, b = %d\n", a, b); //10,1
a = 0;
b = a; //b = false
printf("a = %d, b = %d\n", a, b); //0,0
return 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++ 中的引用
引用可以看作一个已定义变量的别名
引用的语法:Type& name = var;
int a = 4;
int& b = a; //b为a的别名
b = 5; //操作b就是操作a
注意:普通引用在定义时必须用同类型的变量进行初始化
引用示例
Demo
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 4;
int& b = a;
b = 5;
printf("a = %d\n", a); //5
printf("b = %d\n", b); //5
printf("&a = %p\n", &a); //&a = 0xbfe54aec
printf("&b = %p\n", &b); //&b = 0xbfe54aec
return 0;
}
C++ 对三目运算符做了什么?
int a = 1;
int b = 2;
(a < b ? a : b) = 3; //正确,返回a或b的引用,可作为左值
(a < b ? 1 : b) = 4; //错误,返回1或b的值,不能作为左值
原文:https://www.cnblogs.com/bky-hbq/p/13695178.html