2-1 C++内置类型

2.1.1 算术类型(Arithmetic Types)
概览

分类
整型与浮点型
- 整型: short\int\long\long long\char
- 浮点型: float\double
有符号和无符号
表示范围有差异,如 char: -128-127; unchar: 0-255
存储
单位转换
1bit表示1个二进制数。
1byte=8bit,是可寻址的最小内存块,与一个整数相关联(该整数称为地址)
1word=4/8byte,是存储的基本单元
常见类型的大小
| Type | Minimum Size(byte) |
|---|---|
| bool | 1 |
| char | 1 |
| short | 2 |
| int | 4 |
| long | 4 |
| long long | 8 |
| float | 4 |
| double | 8 |
实验
#include<iostream>
using namespace std;
int main(){ cout<<"bool = "<<sizeof(bool)<<endl;
cout<<"char = "<<sizeof(char)<<endl;
cout<<"short = "<<sizeof(short)<<endl;
cout<<"int = "<<sizeof(int)<<endl;
cout<<"long = "<<sizeof(long)<<endl;
cout<<"long long = "<<sizeof(long long)<<endl;
cout<<"float = "<<sizeof(float)<<endl;
cout<<"double = "<<sizeof(double)<<endl;
return 0;
}
结果
几点说明
- char 大小为 1byte , bool大小不定
- int 一般为 32bite, short\long\long long大小随系统和编译器而定
- int >= short
- long >= int
- long long > int
- float 小数点后一般保留6位, double一般保留10位
选择
- 整数要么用int,要么用long long。【避免使用char\short和long】
- 浮点数尽量用double
2.1.2 类型转换(Type Conversion):关于int 和 unsigned int
以 32-bit int为例
计算值
unsigned int取值范围为0~4294967295【1+2+…232】当赋予
unsigned int的值val在此范围之外【最常见的情况是unsigned int 的值为一个负数】时,unsigned int= val对4294967296取模例程
#include<iostream>
using namespace std;
int main(){
unsigned int u = -1;
cout<<u<<endl;
return 0;
}
结果:4294967295【-1对4294967296取模】
取模与取余
取余时商往0靠

取模时商往负无穷靠

取模的性质:若a+b==模,那么c-a等价于c+b
常见错误:给unsigned int 赋负值
例程
#include<iostream>
using namespace std;
int main(){
unsigned int u = 10;
int i = -42;
cout<< u+i << endl;
return 0;
}
结果:4294967264
2.1.3 字面值常量(literal)
字面值常量(literal)可以理解为赋给变量(variable)的值(value)。一般左右赋值符号(=)的右值。
整型和浮点型字面量
- 整型
- 十进制:
20 - 八进制:开头加0.
024 - 十六进制:开头加0x。
0x14 20= =024= =0x14
- 十进制:
- 浮点型
- 小数点表示:3.1415
- 科学计数法:3.1415E0/3.1415e0
布尔字面值和指针字面值: 略
转义序列

指定字面值类型:添加前后缀

2-1 C++内置类型的更多相关文章
- 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++基本内置类型
C++基本内置类型 基本内置类型包括算术类型和空类型. 算术类型 算术类型包括整型和浮点型. 类型 含义 最小尺寸 bool 布尔型 - char 字符型 8 bit wchar_t 宽字符型 16 ...
- 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__', '_ ...
随机推荐
- ArgoWorkflow教程(三)---使用 Artifacts 实现步骤间文件共享
上一篇我们分析了 Workflow.WorkflowTemplate.template 之间的关系.本篇主要分析如何在 argo-workflow 中使用 S3 存储 artifact 实现步骤之间的 ...
- 出海浪头之上,共探CDN进化新支力
CDN技术自问世以来已超过20个年头,在云计算与AI深度融合的大趋势下,各行业实际业务需求已发生巨变,下一代CDN技术又将走向何方?8月16日,"抓住泛娱热趋,打通增长脉络--大浪淘沙之后的 ...
- ELK快速部署(踩坑记录、常见报错解决)及常用架构讲解
ELK = Elasticserach + Logstash + kibana(包含但不仅限于) 简介: Elasticsearch:分布式搜索和分析引擎,具有高可伸缩.高可靠和易管理等特点.基于 A ...
- 【Docker教程系列】Docker学习5-Docker镜像理解
通过前面几篇文章的学习,我们已经安装好了Docker,也学会使用一些常用的命令.比如启动命令.镜像命令.容器命令.常用命令分类后的第二个就是镜像命令.那么镜像是什么?拉取镜像的时候为什么是一层一层的? ...
- Blender 2D动画
前情提要: 本来之前会的,很久没有弄,居然忘了,忘得透透的,没得办法,先简单记录一下 前提: 安装有Blender软件 步骤: 1. 打开Blender 2.点击文件,新建,2D Animation ...
- SpringMVC获取请求参数
目录 通过ServletAPI获取 通过控制器方法的形参获取请求参数 @RequestParam @RequestHeader @CookieValue 通过POJO获取请求参数 解决获取请求参数的乱 ...
- 啥是Session?
什么是 Session 会话? 1.Session 就一个接口(HttpSession). 2.Session 就是会话.它是用来维护一个客户端和服务器之间关联的一种技术. 3.每个客户端都有自己的一 ...
- 【YashanDB知识库】stmt未close,导致YAS-00103 no free block in sql main pool part 0报错分析
问题现象 问题单:YAS-00103 no free block in sql main pool part 0,YAS-00105 out of memory to allocate hash ta ...
- 掌握 C++17:结构化绑定与拷贝消除的妙用
C++17 特性示例 1. 结构化绑定(Structured Binding) 结构化绑定允许你用一个对象的元素或成员同时实例化多个实体. 结构化绑定允许你在声明变量的同时解构一个复合类型的数据结构( ...
- windows在cygwin64下使用acme.sh批量签发Let's Encrypt的ssl证书,并用powershell重新分配iis证书
使用前提 本脚本是在使用阿里云Windows服务器的前提,如果使用其他dns服务,请参看acme.sh的dns相关文档 配置好cygwin64.acme.sh并配置好阿里云账户,openssl最好也安 ...