这是学习C++的第二节课,老师讲的好快,再总结一遍吧
- C++中数据类型包括基本类型、构造类型、指针类型、引用类型和空类型(void)。
- 布尔型就是逻辑型,空类型就是无值型
这里详细介绍基本类型和构造类型
基本类型 | 包括 |
---|---|
整形 | 短整型(short int)、整形(int)、长整形(long int) |
字符型 | 字符型(char) |
浮点型 | 单精度(float)、双精度(double)、长双精度(long double) |
构造类型 | 包括 |
---|---|
布尔型 | 布尔型(bool) |
枚举类型 | 枚举类型(enum) |
数组类型 | \ |
结构体类型 | 结构体类型(struct) |
共用体类型 | 共用体类型(union) |
类类型 | 类类型(class) |
- C++的数据包括常量和变量,常量和变量都具有类型。由以上这些数据类型还可以构成更复杂的数据结构
- C++并没有统一各类数据的精度、数值范围和在内存中所占的字节数,各C++编译系统根据自己的情况做出安排
- 在整形符号int和字符型符号char的前面,可以加修饰符signed(表示:有符号)或者unsigned(表示:无符号)。如果指定为signed,则数值以补码形式存放,储存单元中的最高位(bit)用来表示数值的符号。如果指定为unsigned,则数值没有符号,全部二进制位都用来表示数值本身。
什么是常量
常量的值是不能改变的,一般从其字面形式即可以判别是否为常量。常量包括两大类,即数值型常量(即常数)和字符型常量
数值常量就是通常说的常数。在C++中,数值常量是区分类型的,从字面形式即可识别器类型。
用单撇号括起来的一个字符就是字符型常量,在内存中占一个字节
- ①字符常量只能包括一个字符,‘AN’是不合法的
- ② 字符常量区分大小写字母
- ③撇号(')是定界符,而不属于字符常量的一部分
除了以上形式的字符常量外,C++还允许用一种特殊形式的字符常量,就是以“\”开头的字符序列。
为了编程和阅读的方便,在C++程序设计中,常用一个符号名代表一个常量,称为符号常量,即以标识符形式出现的常量。
在程序运行期间其值可以改变的量称为变量,一个变量应该有一个名字,必能在内存中占据一定的储存空间,在该存储单元中存放变量的值。
用来标识变量、符号常量、函数、数组、类型等实体名字的有效字符序列称为标识符(identifier)。
- C++规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。
- 在定义变量时,如果加上关键字const,则变量的值在程序运行期间不能改变,这种变量称为常变量(constant variable)。
- 在定义常变量时必须同时对它初始化(即指定其值),此后它的值不能再改变。常变量不能出现在赋值号的左边。
- const int a a= 3;(正确)
- const int a;
a = 3;(错误)
运算符类型 | 表达式 |
---|---|
算术运算符 | +(加)-(减) *(乘) /(除) %(整除求余)++(自加) --(自减) |
关系运算符 | >(大于)<(小于) ==(等于)>=(大于或等于)<=(小于或等于)!=(不等于) |
逻辑运算符 | &&(逻辑与) |
位运算符 | <<(按位左移) >>(按位右移) &(按位与) |
赋值运算符 | =及其扩展赋值运算符 |
条件运算符 | ? : |
逗号运算符 | , |
- +(加法运算符,或正值运算符。如3+5,+3)
- -(减法运算符,或负值运算符。如5-2,-3)
- (乘法运算符。如3*5)
- /(除法运算符。如5/3)
- %(模运算符,或称求余运算符,%两侧均应为整型数据,如7%4的值为3)。
多数编译系统采取“向零取整”的方法- 如果参加+, -, *, / 运算的两个数中有一个数为float型数据,则运算的结果是double型,因为C++在运算时对所有float型数据都按double型数据处理。
- C++规定了各种运算符的结合方向(结合性),算术运算符的结合方向为“自左至右”。
- 在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。
- (1) 自增运算符(++)和自减运算符(–)只能用于变量,而不能用于常量或表达式。
- (2) ++和–的结合方向是“自右至左”,见附录B。
- (3) 自增运算符(++)和自减运算符(–)使用十分灵活,但在很多情况下可能出现歧义性,产生“意想不到”的副作用。
- (4) 自增(减)运算符在C++程序中是经常见到的,常用于循环语句中,使循环变量自动加1。也用于指针变量,使指针指向下一个地址。
- 在表达式中不同类型的数据会自动地转换类型,以进行运算。有时程序编制者还可以利用强制类型转换运算符将一个表达式转换成所需类型。
- 赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量。如“a=3”的作用是执行一次赋值操作(或称赋值运算)。把常量3赋给变量a。也可以将一个表达式的值赋给一个变量。
如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时会自动进行类型转换。
- (1) 将浮点型数据(包括单、双精度)赋给整型变量时,舍弃其小数部分。
- (2) 将整型数据赋给浮点型变量时,数值不变,但以指数形式存储到变量中。
- (3) 将一个double型数据赋给float变量时,要注意数值范围不能溢出。
- (4) 字符型数据赋给整型变量,将字符的ASCII码赋给整型变量。
- (5) 将一个int、short或long型数据赋给一个char型变量,只将其低8位原封不动地送到char型变量(发生截断)。
- (6) 将signed(有符号)型数据赋给长度相同的unsigned(无符号)型变量,将存储单元内容原样照搬(连原有的符号位也作为数值一起传送)。
在赋值符“=”之前加上其他运算符,可以构成复合的运算符。
- +=、-=、*=…
由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。
- <变量> <赋值运算符> <表达式>
并不是任何对象都可以作为左值的,变量可以作为左值,而表达式a+b就不能作为左值,常变量也不能作为左值,因为常变量不能被赋值。
C++提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如
3+5,6+8
称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为
表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。
- 赋值运算符的优先级别高于逗号运算符