2 C++基础
2.1 C++程序的结构
2.1.4 名称空间
using 声明语句同样有生命周期,只对新标准C++头文件有效,对旧标准的头文件using 语句没有意义
using namespace std;//声明一次使得标准库中的所有名称都可用
using std::cin;//声明一次使得标准库中的cin可用
std::cin;//使用一次,声明一次
2.1.5 C++语素
关键字
| 与类型有关 | union、violate |
|---|---|
| 流程控制 | |
| 存储属性 | register |
| 其他 | asm、const_cast、dynamic_cast、mutable、reinterpret_cast、static_cast、template、typeid、typename、wschar_t |
2.2 变量与基本类型
-2.2.1 变量
2.2.2 整形
| 类型 | 字节数 | 表示范围 |
|---|---|---|
| [signed] int | 2或4,与机器有关 | 与机器有关 |
| unsigned int | 2或4,与机器有关 | 与机器有关 |
| [signed] short [int] | 2 | -215-215-1 |
| unsigned short [int] | 2 | 0-216-1 |
| [signed] long [int] | 4 | -231-231-1 |
| unsigned long [int] | 4 | 0-232-1 |
[]:可省略。1字节8位
- 整型在内存中是用二进制补码定点存储的。
- 从可移植的角度选择short和long类型标识整数
- size_t 方便系统间移植。在32位系统中为unsigned int(32位) ,在64位系统中为unsigned long(64位)
| 类型 | 字节数 |
|---|---|
| float | 4 |
| double | 8 |
| long double | 10 |
2.2.3 浮点数
每个浮点型量由符号位、阶码B、尾数C组成,大小为C*2B
2.2.4 基本字符型
转义字符:不能打印的特殊字符
| 符号 | 含义 |
|---|---|
| ‘\n‘ | 换行 |
| ’\r‘ | 回车 |
| ’\t‘ | 水平制表符 |
| ’\v‘ | 垂直制表符 |
| ’\b‘ | 退格 |
| ’\f‘ | 进制 |
‘’’ ‘"’ ‘\’
2.2.5 宽字符型
cout、cin默认处理的是char型数据,不能直接用于处理wchar_t字符,iostream中提供了与此类似的wcout和wcin,专门处理wcahr_t型字符,此外可以通过前缀L指明wchar_t型常量或字符串
2.3 常量
通过程序或者输入无法改变常量值。
使用后缀区分整型常量和浮点型常量的长度。
2.3.1 整型常量和浮点型常量
- 表示一个整型常量
十进制:无前缀,int i=100;
八进制:0前缀,int i=0124;
十六进制:0x或者0X前缀,int i=0x64;
2.3.2 字符型常量
对双字符常量来说,系统将其解释为一个int型的数据,前面的字符作为低位字节,后面的字符作为高位字节,这种方式只适合可显示字符。对有些系统来说,int为2字节,则‘ABA’和‘ABAB’不合法,对int类型占4个字节的系统来说,'ABA’和’ABAB’可用。对任何系统来说,四位以上的字母组合都是不合法的。
字符常量可由转义代码表示,反斜杠后给一个八进制或十六进制的ASCII码,用单引号括起来,表示ASCII表中对应的字符。‘A’=’\0101’=’\0x41’
2.3.3 字符串常量
相比字符常量多’\0’
2.3.4 符号常量
用const修饰的标识符指向一个“只读”的程序实体,称为符号常量。与普通常量的不同之处,在于其像变量一样有标识符,有效提高了系统的可修改性和可读性。
调试变量可采用此方法减少修改量。
数组的长度可用此定义。
const int PEOPLE=5;//在程序中可以用PEOPLE来代表5
应在声明同时对const常量进行初始化,一旦声明,const常量无法修改。
2.3.5 枚举常量
用户自己定义一种数据类型,并列举该数据类型的取值范围,每个枚举常量对应一个整数,一般情况下枚举常量不能计算。在对
enum 枚举类型名 {枚举常量1[=整型常数1],枚举常量2[=整型常数2],枚举常量3[=整型常数3],枚举常量4[=整型常数4],....}[变量名列表]
enum day{Sunday,Monday=10,Tuesday=10,Wednesday,Thursday,Friday=20,Saturday}curray;//Sunday=0,Monday=10,Tuesday=10,Wednesday=11,Thursday=12,Friday=20,Saturday=21
2.4 运算符与表达式
浮点数判断等价应该是一个区间
2.4.6 条件运算符
一个三目运算符
s1 ? s2 : s3;
2.4.7 位运算
位逻辑运算符:&(与)、^(异或)、|(或)、~(非)
移位运算符:<<(左移) >>(右移)
A<<n;/*A左移n位*/
A>>n;/*A右移n位*/
2.4.8 赋值运算
程序实体是内存中的一块可标识区域,左值是左值表达式的简称,是一个程序实体的表达式。判断一个表达式是否为左值的方法是看其能否放在等号[赋值号]的左边。
- 声明时使用的“=”符号,称为初始化符,与赋值符不同。 同时声明两个变量并初始化的语句是非法的。
- 用const修饰的变量也是左值,但不能放在赋值号的左边,只有能被修改的左值才可以放在赋值号的左边。
2.4.9 ++和–
a++;/*不是左值*/
++a;/*是左值*/
++++a;/*合法*/
++(a++);/*非法*/
++(a+b);/*非法*/
2.4.10 逗号表达式
用逗号分隔的一组表达式,从左到右计算,逗号表达式的结果是最右边表达式的值,其类型也是最后一个表达式的类型。
合理使用逗号表达式可以写出精炼的代码
2.4.11 sizeof运算符与sizeof表达式
其返回值为size_t,无符号整数,与负数比较时应转换为(int)
2.4.12 运算符的优先级和结合性
- 操作数多的运算符优先级低,单目>双目>三目>赋值>逗号
- 双目优先级:算术>比较>位>逻辑
- 算术运算符:*、/和%的优先级高于+ -
- 位:- >& >^ >|
- 逻辑:!>&&>||
赋值运算符具有相同的优先级
2.6.2 switch结构
为了程序的精炼,经常采用多个入口共用一个语句的写法
switch(x)
{
case 1:case 3:case 5:
cout<<"a"<<endl;
break;
case 2:case 4:
cout<<"b"<<endl;
break;
default:
cout<<"请检查输入是否正确"<<endl;
}
2.6.11 自由转向语句 goto
只要在某行前注以标号,便可以使用"goto+标号"的形式将流程转到该行。能从多重循环中一下子跳到外边,避免了运用多次break的麻烦。

6929

被折叠的 条评论
为什么被折叠?



