一、逗号表达式
可用于在单个关系表达式中需要对多个表达式进行处理的情况,举个栗子:
for (int i = 0, j = 10; true; i++, j--){......}
此处i++, j--
就是应用了逗号表达式,在一条语句中处理了多个关系。
逗号表达式还提供同步措施,可以使后面的表达式一定在前面的表达式之后执行,例如:
i = 10, j = i * 2;
该表达式限定了两条语句的执行顺序,保证安全。
特别注意,逗号表达式的优先级是所有表达式中最低的。
二、延时控制
1. 循环延时
早期的延时程序通常使用循环来进行处理,结果导致该程序在运算较快的计算机中延时效果有限,程序举例:
int wait = 0;
while(wait < 10000)
wait++;
2. 时钟延时
头文件:ctime
,当前时间:clock()
,返回类型别名:clock_t
常量:CLOCKS_PER_SEC
,表示每秒钟包含的系统时间单位数,因此:
- 秒数 = 系统时间 /
CLOCKS_PER_SEC
- 以系统时间为单位的单位时间 =
CLOCKS_PER_SEC
* 秒数
程序示例:
float secs = 10.0;
clock_t delay = secs * CLOCKS_PER_SEC; // 系统的单位时间为单位,而不是以秒为单位
clock_t start = clock();
while(clock() - start < delay ) ;
三、别名
1. #define
定义方法:#define aliasName typeName
,注意此处不需要封号。
该定义方法的原理是在编译时先将所有的BYTE
替换为char
,因此不能用于较为复杂的程序,否则会出现错误,举个栗子:
#define FLOAT_POINTER float *
FLOAT_POINTER pa, pb;
//------预处理后的代码如下------//
float * pa, pb; // *pb的定义错误,与预期不符
2. typedef
定义方法:typedef typeName aliasName;
,注意此处需要封号。
该定义方法的原理是为目标变量建立一个别名,而不是在编译前替换相应的程序,因此建议使用typedef
。
四、基于范围的for循环(C++11)
类似于Python中的循环方式,不需要人工定义循环次数,而是根据循环主体的范围进行判断,常用于数组、容器等,举个栗子:
int example = {1, 2, 3, 4, 5};
for (int i : example) // 新变量 i 访问数组
cout << i << endl;
//------若要改变数组的值,则需要引用------//
int example = {1, 2, 3, 4, 5};
for (int &i : example) // 新变量 i 访问数组
i++;
五、符号判断
1. 字符函数库:cctype
特别注意返回值均为int
,而不是bool
2. 常用函数:
isalpha(ch)
:判断是否为字母isdigits(ch)
:判断是否为数字isspace(ch)
:判断是否为空白,即空格、换行符、制表符ispunct(ch)
:判断是否为标点符号isalnum(ch)
:判断是否为字母或数字iscntrl(ch)
:判断是控制字符isdigit(ch)
:判断是否为0~9的数字isgraph(ch)
:判断是否为除空格以外的可打印字符isprint(ch)
:判断是否为可打印字符(包括空格)islower(ch)
:判断是否为小写字母isupper(ch)
:判断是否为大写字母isxdigit(ch)
:判断是否为十六进制数tolower
:将字符中大写字母转换为小写字母并返回toupper
:将字符中小写字母转换为大写字母并返回