/
...
/
/
一. 基础数据类型
Search
Try Notion
一. 基础数据类型
一.标识符规则
1, 变量名规则
💻标识符规则(基本原字符集)
int __a //编译器内部保留 int __A //同上 int _A //同上 int _a //全局变量保留
Copy
C++
📏C++字节表
类型
长度
默认值\字面量
Boolean(ISO C++加入)
1Bit
false
Char
8Bit
'\u0000'(null)
wchar_t
对应底层类型而变(underlying类型)
L'A' (L前缀)
char16_t
对应底层类型而变
u'A'(u前缀)
char32_t
对应底层类型而变
u'A'(U前缀)
可通过变为双引号转换为字面量数组
原始字面量
R"(...)" 或R"+*(...)*+"
byte
16Bit
(byte)0
short
(16Bit At Least)
(short)0
int
(At Least short)
0
long
(32Bit At Least)&&(At Least int)
0L
long long(可能不支持)
(64Bit At Least)&&(At Least long)
0LL
unsigened
...
...
float
32Bit at least
0.0f
double
45Bit at least && ≥ float
0.0d
e表示法...
📏支持扩展字符集用于标识符命名(通用字符名)
// \u[8个16进制] // \U[16个16进制] // 例 int \u00F6 ; cout << \u00F6
Copy
C++
类似转义序列,使用ISO10646/Unicode(一种通用编码名)
注意:通用编码名而非通用编码
二.常量
#define A 50 符号常量
const int a = 50 const常量
可以使用命名空间
在标准C语言中类似变量(部分C编译器采用C++处理C),不能使用其声明数组,C++可
const指针
int a = 1 ; const int *pt = &a ; //普通变量赋给常量指针 //代表指针所指向的值不变 const int a = 1 ; const int *pt = &a //const量赋给const指针 合法 const int a = 1 ; int *pt = &a ; //const量赋给普通指针 不合法 //非要这么做的借助强制类型转换const_cast //同样的规则 //函数传参时 //若有一个const指针,传参时其形参必须也是const形式
Copy
C++
字面量规则:参照C++字节表
字面量类型确定
整形
除非有理由为其他值统一为int
根据后缀
10进制不带后缀以 int\long\long long为顺序
16进制不带后缀以 int\unsigned int\long\unsigned long\long long\ull为顺序
三.变量定义
变量声明
定义声明:开始分配内存空间
Auto:用于复杂类型比如
std:vector<double> scores ; auto pv = scores.begin() ;
Copy
C++
引用声明:使用其他位置定义的变量
初始化
四.运算符
算数运算符
关系运算符
赋值运算符
逻辑运算符
位运算符
造型(Cast)运算符
📏类型转换规则
1.限缩问题
大浮点→小浮点(double→float)
精度降低(有效位数降低):
超出取值范围:结果不确定
浮点→整数(double→int)
小数丢失
超出取值范围:结果不确定
大整形→小整形(long→int)
超出取值:通常只复制右边字串
无符号↔有符号
发生条件:
函数传参\返回
赋值
常规赋值
{}{} 列表初始化,赋值(C++11):不允许限缩
表达式运算(UpCast)
显式强制类型转换
其他单目运算符
++ --
单目前缀运算符++ — * & 结合性从左向右 例: *++a++*
单目后缀运算符++ — [] 结合性从左向右 例: a++—++
总统上,越靠近操作数的越先计算,并且先后缀优先级比前缀高(解释了*p[10] 不加括号后仙鹤[] 结合)
重载运算符
插入运算符
count << "Hello World" ;
Copy
C++
将字符串发送给count,由于有运算符重载(面向对象的特性),可以“智能”判断发送的类型,并作出不同操作
比如
int carrot = 5 ;count << carrot ;
Copy
C++