【C++ Primer】2.1 基本内置类型
1. 基本内置类型
基本算数类型:
| 类型 | 含义 | 最小尺寸 |
|---|---|---|
bool |
布尔类型 | 8bits |
char |
字符 | 8bits |
wchar_t |
宽字符 | 16bits |
char16_t |
Unicode字符 | 16bits |
char32_t |
Unicode字符 | 32bits |
short |
短整型 | 16bits |
int |
整型 | 16bits (在32位机器中是32bits) |
long |
长整型 | 32bits |
long long |
长整型 | 64bits (是在C++11中新定义的) |
float |
单精度浮点数 | 6位有效数字 |
double |
双精度浮点数 | 10位有效数字 |
long double |
扩展精度浮点数 | 10位有效数字 |

2. 如何选择类型
- 1.当明确知晓数值不可能是负数时,选用无符号类型;
- 2.使用
int执行整数运算。一般long的大小和int一样,而short常常显得太小。除非超过了int的范围,选择long long。 - 3.算术表达式中不要使用
char或bool。 - 4.浮点运算选用
double。
3. 类型转换
- 非布尔型赋给布尔型,初始值为0则结果为false,否则为true。
- 布尔型赋给非布尔型,初始值为false结果为0,初始值为true结果为1。
3.1 无符号整型接收超出范围的值(例如负数时):
数据以补码形式存放,-1补码为1111 1111
unsigned char视-1的补码为正数,而正数的原码、反码、补码都是一样的。因此1111 1111被解析为255.
因此c的值为255%256 = 255


练习:

unsigned u = 10, u2 = 42;
std::cout << u2 - u << std::endl;
std::cout << u - u2 << std::endl;
输出:
32
4294967264
/*
*-32
*补码:
*1111 1111 1111 1111 1111 1111 1110 0000
*无符号时,十进制为:2^32 - 1 - (16+8+4+2+1) = 4,294,967,264
* 4,294,967,264 % 4,294,967,296 = 4,294,967,264
*/
字面值常量
一个形如
42的值被称作字面值常量(literal)。- 整型和浮点型字面值。

- 十进制字面值不会是负数。


个人理解:十进制字面值没有用unsigned类型存储,因此如果存负数,则正数的表示范围比八进制和十六进制的少一位符号位
字符和字符串字面值。
使用空格连接,继承自C。
字符字面值:单引号,
'a'字符串字面值:双引号,
"Hello World"分多行书写字符串。
std:cout<<"wow, a really, really long string"
"literal that spans two lines" <<std::endl;
转义序列。
\n、\t等。布尔字面值。
true,false。指针字面值。
nullptr
字符串型实际上时常量字符构成的数组,结尾处以
'\0'结束,所以字符串类型实际上长度比内容多1。
【C++ Primer】2.1 基本内置类型的更多相关文章
- C++基本内置类型
C++基本内置类型 基本内置类型包括算术类型和空类型. 算术类型 算术类型包括整型和浮点型. 类型 含义 最小尺寸 bool 布尔型 - char 字符型 8 bit wchar_t 宽字符型 16 ...
- golang的内置类型map的一些事
golang的map类型是一个比较特殊的类型,不同于int, string, byte这样的基本类型,在经过一番探究之后得出了一些结论: 1.golang的map类型虽然是内置类型,但和基本类型有很大 ...
- JavaScript备忘录(1)——内置类型
JavaScript有一些内置类型,还有很多常用的内置的方法,本文稍作总结,以备查阅. 值类型 我的理解,值类型是分配在栈上的,而引用类型(当然也包括引用类型内部的值类型)是分配在堆上的.值类型是不可 ...
- Python——内置类型
Python定义了丰富的数据类型,包括: 数值型:int, float, complex 序列:(iterable) str, unicode, tuple, list, bytearray, buf ...
- C++内置类型对象之间的转换
C++定义了一组内置类型对象之间的标准转换,在必要时它们被编译器隐式地应用到对象上. 隐式类型转换发生在下列这些典型情况下. 1. 在混合类型的算数表达式中 规则:在这种情况下最宽的数据类型成为目标转 ...
- C++ - 内置类型的最大值宏定义
内置类型的最大值宏定义 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24311895 C++中, 常常会使用, 某些类型的最大值 ...
- C++ 传参时传内置类型时用传值(pass by value)方式效率较高
来源:唐磊的个人博客<C++ 传参时传内置类型时用传值(pass by value)方式效率较高> 在<Effective C++>里提到对内置(C-like)类型在函数传参时 ...
- 易被忽略的Python内置类型
Python中的内置类型是我们开发中最常见的,很多人都能熟练的使用它们. 然而有一些内置类型确实不那么常见的,或者说往往会被我们忽略,所以这次的主题就是带领大家重新认识这些"不同寻常&quo ...
- Python isinstance 方法 判断 built-in types(内置类型)技巧
Python isinstance 方法 判断 built-in types(内置类型)技巧 d = {} isinstance(d, type({})) isinstance(d, dict) l ...
- Python内置类型——set
Python中,内置类型set和frozenset用来表示集合,我们首先查看这两个类型支持的特殊对象,从而可以理解他们的特性. >>> dir(set) ['__and__', '_ ...
随机推荐
- 构建基于深度学习神经网络协同过滤模型(NCF)的视频推荐系统(Python3.10/Tensorflow2.11)
毋庸讳言,和传统架构(BS开发/CS开发)相比,人工智能技术确实有一定的基础门槛,它注定不是大众化,普适化的东西.但也不能否认,人工智能技术也具备像传统架构一样"套路化"的流程,也 ...
- 多台服务器之间配置ssh免密登录
需求:假设有N台服务器,N台服务器之间都需要配置相互间免密登录 步骤1:在一台服务器上安装ansible yum -y install epel-release && yum -y ...
- 图与网络分析—R实现(三)
最小生成树 (Minimum Spanning Tree) 应该大家都不陌生,Spanning 有跨越的意思,生成树一般来说每个节点都能访问到别的节点,是一个连通树.所以,一般考虑无向图里去造生成树. ...
- python之pdf转换操作 PyMuPDF库学习
1. 资料链接github地址: pymupdf/PyMuPDF: Python bindings for MuPDF's rendering library官方手册: PyMuPDF Documen ...
- pandas之设置显示格式
在用 Pandas 做数据分析的过程中,总需要打印数据分析的结果,如果数据体量较大就会存在输出内容不全(部分内容省略)或者换行错误等问题.Pandas 为了解决上述问题,允许你对数据显示格式进行设置. ...
- [Linux/Apache Http]Apache Http(d)服务访问时报: 403 Forbidden You don't have permission to access /cdh/ on this server.
1 问题描述 http错误代码403:403 Forbidden 资源不可用.服务器理解客户的请求,但拒绝处理它.通常由于服务器上文件或目录的权限设置导致. 2 解决思路 胜利的果实: 确保关闭sel ...
- [Linux]浅析"command > /dev/null 2>&1 &" 与 "command 1>/dev/null 2>&1 &"
1 问题描述 1.1 问题描述 在一项目中查看CENTOS 服务器的定时任务crontab时查看到如下这段命令: 命令clearLog.sh > /dev/null 2>&1 &a ...
- spring-boot-starter-parent not found
项目开始的springboot版本为2.6.6 <parent> <groupId>org.springframework.boot</groupId> <a ...
- pandas操作excle
Python是一门强大的编程语言,也是数据科学领域中最流行的语言之一.在处理数据时,很多时候需要与Excel进行交互,以进行数据读取.清理和分析.Python中有很多工具可以与Excel进行交互,其中 ...
- 帝国ECMS静态生成为一行代码/静态页面打乱教程
一.内容页变成一行修改1.打开文件e/class/functions.php2.找到以下函数 function GetHtml($classid,$id,$add,$ecms=0,$doall=0) ...