一.标识符规则
1, 变量名规则
标识符规则(基本原字符集)
int __a //编译器内部保留
int __A //同上
int _A //同上
int _a //全局变量保留
Copy
C++
C++字节表
支持扩展字符集用于标识符命名(通用字符名)
// \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++