/
...
/
/
一.基础数据类型
Search
Try Notion
一.基础数据类型
对应: C++ Primer Plus 三.处理数据
变量→三个属性→
变量名→命名规则→字符集
类型→
字面值
整型→climit→字符整型 一般整型 bool
浮点→cfloat→
操作→运算符→算术运算
一.类型简介
变量: 计算机存储数据的单位
为了存储数据需要程序需要知道三个属性
存储在哪里→对应概念: 变量名/指针
储存何种类型→对应概念: 类型
存储什么值→对应概念: 初始化/赋值
内置数据类型分类
基本类型: 只有整数和浮点数 但是有各自的变体
复合类型: 数组 字符串 结构 ...
也将浮点数整数统称算数型(Arithmetic)
标识符规则规则
C++源字符集/执行字符集
源字符集: 可用于编写源代码
执行字符集: 程序可处理的字符集
C++不仅支持基本的源/执行字符集也支持扩展的源/执行字符集
只采用基本字符集
字母[:alpha:] 数字[:digit:] _
需要保留关键字
💻标识符保留规则(基本原字符集)
int __a //编译器内部保留 int __A //同上 int _A //同上 int int //关键字保留 int _a //全局变量保留
Copy
C++
int __a __A 双下划线开头 编译器内部实现
int _A _[:upper:]下划线开头
int _a _[:lower:] 全局变量保留
通用字符名Unicode
如果想用普通美式键盘输入特殊字符,可以使用通用字符名
用法类似转义序列 int \u00F6
使用的是Unicode码点(ISO10646)
二.整型
C++整型表
📏C++整型表
Show All
Filter
Sort
类型
长度
默认值\字面量
包括 字节数规则
字面值的 显式后缀/前缀表达表达
整型的分类
按长度分类: short int long
对应的无符号版本 unsigned前缀
按用途分类: char
整型字面值表示法
默认字面值的确定规则: 除非有理由为其他值统一为int
字面值的值表示法
字面值类型的显式声明
U UL LL ULL: 一般整型的后缀表示法
'A' : char字面值(ASCII编码)
整型限制
climit包含了整型限制的宏
基本格式: 宏前缀_宏后缀
宏前缀
S[...]: signed 类型,比如SCHAR 为signed char
U[...]: unsigned 类型,比如UCHAR 为unsigned char
CHAR: char类型
SHRT: short类型
INT: int类型
LONG: long类型
LLONG: long long类型
宏后缀
_MAX 最大值
_BIT 位数
_MIN 最小值
整型限制速记
有序性: short≤int≤long≤long long
最低实现要求: short≥16Bits long≥32Bits long long≥64Bits
char类型(国际化支持: 执行字符集)
wchar_t 诞生理由
程序需要处理的字符集可能无法用一个8位字节表示
同时支持一个小型基本字符集和一个较大的扩展字符集
8位char可以表示基本字符集
wchar_t (Wdith Char宽字符类型) 表示扩展字符集
wchar_t 特性
它有足够长的空间,可以表示系统使用的最大扩展字符集
长度随实现而定
iostream提供了专门的工具: wcin和wcout
char16_t char32_t
char16_t保证至少16bit,char32_t保证至少32bit
sizeof(char)保证为1
wchar_t大小不确定
三.浮点数
浮点字面值表示法
在默认情况下浮点数字面值类型为double
字面值的值表示法
标准小数表示法
E表示法 [:+-(none):][实数部分]E[:+-(none):][指数部分] 其中实数部分的小数点一般都加在第一位有效数字后,但也不强制,甚至可以没有
字面值的类型显示声明
F后缀的 float
无后缀的 double
L后缀的long double
cfloat浮点限制
float简介
浮点值= 精度部分(有效位数/尾数) * 基数(底数) ^ 指数部分
flt=(1)sign×mantissa×baseexponentflt = (-1)^{sign} × mantissa × base^{exponent}
前缀
DBL double类型
FLT float类型
LDBL long doble类型
后缀
_RADIX 底数(Base)的位数
_MANT_DIG mantissa精度2进制最小位数
_DIG mantissa尾数的10进制最小位数
_MIN_10_EXP _MAX_10_EXP 指数部分10进制的最大最小值
_MAX _MIN 最大浮点值 最小浮点值
四.运算符
运算符结合性与优先性
结合性是指相同优先性下且相邻的结合性(子优先级)
int d = a+b+c ; 由于结合性为左到右所以先计算a+b
int e = a*b+c*d 运算对象不相邻,结合性规则失效,依据实现的变化而变化
算数运算符
基本5则运算: 加减乘除取模
/运算: 当两个操作数均为整数的时候,执行整型除法舍弃余数(向下取整)
%运算: 考虑到负数问题,由两种取法,对应的是负数除法的向下取整和向上取整. 且有 (a/b)*b+a%b = a
类型转换
类型转换的情况
初始化 赋值 的类型不匹配
表达式中转换
无条件的自动转换(一般指整型提升):
bool char unsigned char signed char 转换到int
unsigned short → int (如果short比int短)
wchar_t 转换为最接近的一般整型如 int unsigned int unsigned long
enum枚举类也会自动转换
不同类型进行算数运算的时候 会被转换为较大类型
比如有符号a同无符号b相加: 看二者哪个表达范围大转换为哪一者
传参时候类型不匹配
强制类型转换
关系运算符
>= == <=
关系表达式的 表达式值为 bool 类型的ture false
老式实现则为(int) 1 或 (int)0
Show All