脚本宝典收集整理的这篇文章主要介绍了【C++】 4_布尔类型和引用,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
布尔类型@H_777_2@
-
C++ 中的布尔类型
- C++ 在 C 语言的基础类型系统之上增加了 bool
- C++ 中的 bool 可取的值只有 true 和 false
- 理论上 bool 只占用一个字节
注意:
true 代表真值,编译器内部用 1 表示;
false 代表非真值,编译器内部用 0 表示。
布尔类型的值
- bool 类型只有 true(非0) 和 false(0)两个值
- C++编译器会将非0值转换为 true, 0 转换为 false
编程实验: 布尔类型的使用
test_1.cpp
#include <stdio.h>
int main()
{
bool b = 0;
printf("b = %dn", b);
b++;
printf("b = %dn", b);
b = b - 3;
printf("b = %dn", b);
return 0;
}
输出:
b = 0
b = 1
b = 1
test_2.cpp
#include <stdio.h>
int main()
{
bool b = false;
int a = b;
printf("sizeof(b) = %dn", sizeof(b));
printf("b = %d, a = %dn", b, a);
b = 3;
a = b;
printf("b = %d, a = %dn", b, a);
b = -5;
a = b;
printf("b = %d, a = %dn", b, a);
a = 10;
b = a;
printf("b = %d, a = %dn", b, a);
a = 0;
b = a;
printf("b = %d, a = %dn", b, a);
return 0;
}
输出:
sizeof(b) = 1
b = 0, a = 0
b = 1, a = 1
b = 1, a = 1
b = 1, a = 10
b = 0, a = 0
三目运算符
- C++ 对三目运算符进行了升级
下面的代码正确吗?
void code()
{
int a = 1;
int b = 2;
(a < b ? a : b) = 3;
printf("a = %d, b = %dn", a, b);
}
g++:编译无警告,无错误
gcc:error: lvalue required as left operand of assignment
-
C 语言中的三目运算符返回的是变量值
- 不能作为左值使用
-
C++ 中的三目运算符可直接返回变量本身
- 即可以作为左值使用,又可以作为右值使用
注意:
三目运算符可能返回的值中如果有一个常量值,则不能作为左值使用。
C++ 中的引用
-
变量名回顾
- 变量是一段连续存储空间的别名
- 程序中通过变量来申请并命名存储空间
- 通过变量的名字可以使用存储空间
@H_406_273@
问题:一段连续的存储空间只能有一个别名吗?
void code()
{
int a = 4;
int& b = a; // b 为 a 的别名
b = 5; // 操作 b 就是 操作 a
}
注意:
普通引用在定义时必须用同类型的变量进行初始化
实例分析: 引用初体验
#include <stdio.h>
int main()
{
int a = 4;
int& b = a;
b = 5;
printf("a = %dn", a);
printf("b = %dn", b);
printf("&a = %pn", &a);
printf("&b = %pn", &b);
return 0;
}
输出:
a = 5
b = 5
&a = 0xbfea453c
&b = 0xbfea453c
int a;
float& b = a;
g++: error: invalid initialization of reference of type ‘float&’ From exPression of type ‘int’
float& b;
g++: error: ‘b’ declared as reference but not initialized
int& b = 1;
g++: error: invalid initialization of non-const reference of type ‘int&’ from a temporary of type ‘int’
-
C++ 对三目运算符做了什么?
- 当三目运算符的可能返回都是变量时,返回的是变量引用
- 当三目运算符的可能返回中有常量时,返回的是值
void code()
{
int a = 1;
int b = 2;
(a < b ? a : b) = 3; // 正确,返回 a 或 b 的引用,可作为左值
(a < b ? 1 : b) = 3; // 错误,返回 1 或 b 的值,不能作为左值
}
小结
- bool 类型是 C++ 新增加的基础类型
- bool 类型的值只能是 true 和 false
- C++ 中的三目运算符可作为左值使用
- C++ 中的引用可以看作变量的别名来使用
- 三目运算符的可能返回都是变量时,返回的是引用
以上是脚本宝典为你收集整理的【C++】 4_布尔类型和引用全部内容,希望文章能够帮你解决【C++】 4_布尔类型和引用所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。