C++语法基础备份
1. 变量
(1)变量定义
只能由字母、数字和下划线组成;数字不可以出现在第一个位置上;C++的关键字(保留字)不可以⽤做标识符
(2)变量初始化
不能把小数赋值给整数类型变量,例如int a = 3.14是错误的。对变量的初始化要分别进行,比如int a=b=1错误。
(3)变量的实现
计算机中的操作系统一般会把内存划分成不同区域来存储数据,以便于管理。内存中每个基本存储单元可以存放一个字节的数据,每个字节具有8位,也就是8个比特(bit)。每个内存单元有一个唯一的地址,常用一个16进制数表示和区分。
2. 常量
(1)整数字面量
没有任何小数或指数部分的数字字面量,与数学中的整数直接关联。
a. 十进制
直接写出的整数。例如:0,23,-1024。
b. 八进制
以数字0开头的整数,有效数字为0~7,并且不带有正负号。例如:0126,0163。
错题:029是八进制数,错误。以0开头为八进制数字,八进制数字中不能出现9。
c. 十六进制
以0x或0X开头的整数,有效数字为0-9、A-F(a-f),并且不带有正负号。
例如:0x12a,0xf39
(2)浮点字面量
是有分数形式或指数形式的数字字面量,与数学中的小数直接关联。
a. 小数形式:由数字和小数点组成
例如:0.66,30.0,14.15926
b. 指数形式
在数学中,一个可以用幂的形式来表示的形式。在C语言中,则以e或E后跟一个整数来表示以10为底数的幂数。
e或E的左侧必须要有数字。e或E的右侧为幂次的数值,必须为整数
上述小数可以等价表示为:6.6E-1,30.0e0,0.01415926E3。
(3)字符字面量
字符串除了存储所包含的字符外,还额外包含一个结束标志’\0’
‘\0’:结束符; ASCII编码对应数值为0的字符
(4)符号常量
在C++中,随着程序运算不改变的量叫做符号常量,可以使用const关键字来定义并且初始化。const是⼀个修饰符,例如加在数据类型int的前⾯,用来给这个变量加上一个不变的属性。
A. 初始化
初始化时也可以将修饰符const与数据类型int调换位置,写成int const kCokePrice = 5。
定义的时候必须进行初始化,且在初始化之后不能再进行修改与重新赋值。如果试图对常量做修改,例如把它放在赋值符号的左边,就会被编译器发现并指出错误。
B. 修饰谁的问题
const关键词只能用来修饰常量,错误! 还可以修饰函数,在const成员函数中不能修改任何成员变量,const成员函数不能调用非const成员函数(会发生修改)。
a. 重要!!! const对指针的修饰
const修饰指针:const离谁近谁不能被修改
int a = 5;
// 第一种
const int *p1; // p本身不是cosnt的,而p指向的变量是const的
// 第二种
int const *p2; // p本身不是cosnt的,而p指向的变量是const的
// 第三种
int * const p3; // p本身是cosnt的,p指向的变量不是const的
// 第四种
const int * const p4; // p本身是cosnt的,p指向的变量也是const的
*p1 = 3; // error: assignment of read-only location ‘*p1’
p1 = &a; // 编译无错误无警告
*p2 = 5; // error: assignment of read-only location ‘*p2’
p2 = &a; // 编译无错误无警告
*p3 = 5; // 编译无错误无警告
p3 = &a; // error: assignment of read-only variable ‘p3’
p4 = &a; // error: assignment of read-only variable ‘p4’
*p4 = 5; // error: assignment of read-only location ‘*p4’
3. 数据类型
C++中的数据类型分为基本类型和复合类型。其中基本类型包括了整数、浮点数;复合类型是在基本类型的基础上创建的,包括数组、字符串以及结构体等。
(1)基本类型
A. 整数类型
分为数值整数类型和字符类型。
a. 数值整数
用来表示没有小数部分的数字。数值整数可以按照占用内存大小分为short、int、long以及long long这四种,占用内存越大的类型能表示的数值范围就更大。同时又可以按照是否表示负值分为有符号版本和无符号版本
short、int、long以及long long这四种数值整数类型占用的字节数递增,所以能表示的整数范围也递增。
short类型至少占据2个字节,即16位;一般占用2字节;
int在现代系统中一般占用4个字节,即32位;类型长度大于等于short类型;
long类型长度至少占据4个字节,且大于等于int类型;一般占用4个字节;
long long类型长度至少占据8个字节,且大于等于long类型;一般占用8个字节。
一个 8 位的内存块,可以表示 2 的 8 次方个不同的组合,也就是说能表示 256 个不同的整数;32 位的int类型,可以表示 2^{32}=42949672962 个不同的整数。
每个类型数据可以分别指定有符号版本和无符号版本,用来明确该类型是否需要表示负值。
比如unsigned int就表示无符号的int类型,只能表示正值;
signed int就表示有符号的int类型,可以表示负值。
在不指定有无符号时,都默认是有符号版本。
如果是无符号版本,那么一个8位的内存块可以一一对应到0~255之间的整数;
如果是有符号版本,那么就会考虑负数,这个8位的内存块可以表示一128~127之间的整数
b. 字符类型
专门用来存储计算机中的基本符号:英文字母、数字以及标点等。字符串被显示在宽度等于该字符串长度的字段中。
B. 浮点类型
C++中的浮点数分为三种类型:float、double以及long double,分别表示不同的精度。浮点数的精度在于它可以表示的有效位数以及指数范围。指数范围指的是可以表示的指数幂次大小; 由于浮点数更多的应用是用来表示带小数的数字,所以主要从有效位数的角度讨论精度问题。有效位数用来描述浮点数值的刻画精确程度。
例如:3.14的有效位数是3位,3.1415926的有效位数是8位。
Tips: 需要注意的是,有效位数不会因为小数点的改变而改变,无论314000或者3.14000,它们的有效位数都是3位,多出来0可以看作是一种占位符,因为实际有意义的数字只有3个:3、1和4。
在三种浮点类型中,更大的内存空间可以表示更多的有效位数:
float类型通常占用4个字节,有效位数为6位。
double类型占用的空间是float类型的两倍,即8个字节,有效位数为15位。
long double类型一般占用16个字节的空间。
操作数为字符或短整形时,系统自动转换成整形。操作数为实型时,系统自动转换成双精度型。当两数操作数类型不同时,将精度低(或表示范围小的)的操作数的数据类型变换到与另一操作数类型相同再进行运算。
a. cout的输出问题
单纯的cout输出并不具备控制输出格式的选项,不同类型数据的输出格式如下:
对于char值,如果代表可打印的字符,则将作为一个字符显示在宽度为一个字符的字段中。
对于整型数值,将以十进制方式显示在一个刚好容纳该数字以及负号(如果有)的字段中。
浮点类型被显示为6位,末尾的0不显示,最终显示位数与精度无关;浮点数显示,当指数大于6或者小于等于-5时,将使用科学记数法显示;字段宽度恰好容纳数字以及负号(如果有)。
(2)复合类型
A. 数组的初始化
int b[10]={1,2,3,4,5};的正确理解是前五个元素被依次赋值,后5个元素全部赋值为0。
B. 常用的字符串函数
strcat(s1, s2) 连接字符串
strlen(s1) 获取字符串长度
strcmp(s1, s2)比较字符串的字典序
strcpy(s1, s2)复制字符串
string类无法进行-操作。
本文详细介绍了C++中的变量定义、初始化和实现,包括变量的内存分配。此外,讲解了各种常量类型,如整数、浮点、字符和符号常量,并探讨了const关键字在常量和指针修饰中的作用。接着,概述了C++的基本数据类型,如整数和浮点类型,并讨论了它们的精度和存储。最后,提到了数组的初始化和常用字符串函数。
3425

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



