Cha 2
2.1.1常量
- 整形常量:十进制,八进制,十六进制
八进制:以0字开头,不能含有8
十六进制:以0x或0X开头,由09和AF构成
注意:十进制有正负之分,十六进制和八进制无只能表示无符号整数。 - 浮点型常量
(1)指数表示形式:由整数和小数部分组成,两者至少保留任意其一。
例:3.2e10 3.2e-8
注意:通常默认为double型,3.7e5L表示为long double。
(2)小数表示形式:正常的数学小数。例:1.2 - 字符型常量
可有ASCII表示,char型
(1)普通字符:‘A’
(2)转义字符:‘\101’表示ASCII码为101的字符A
‘\’表示为
注意:‘\’后跟的ASCII码值必须为八进制或十六进制,且取值范围在0~255范围之间 - 字符串常量
“ C++”用双引号表示
注意:字符常量用‘’,而字符串常量用“”,且字符串常量需用结束字符标志‘\0”额外占用一个字节。
2.1.2 变量
变量:数据类型和构造数据类型 - 变量定义(变量声明)
<类型> <变量名表>
例:double a 、int a,b,c; - 变量的值(变量初始化)
注意:一个声明的变量没有初始化,其变量的值是随机值。
2.2.1运算符
1.算术运算符:单目和双目
注意:除法运算其结果取决于两个操作数的类型,往高精度的类型数进行转化。
例:3/6=0 3.0/6=0.5
2.关系运算符
注意:!=和==在关系运算符中优先较其他较低
3.逻辑运算符
结果只能为0或1注意:独有的短路特性。
4.自增自减运算符
注意:其自增的顺序,以及输入输出的最终的特性
例:++i变量值先加1,再引用。i++变量值先引用再加1
5.逗号运算符
计算一个逗号表达式的值,从左至右依次计算各个表达式值,最后一个表达式的值和
类型就是整个表达式的值和类型。
6.赋值运算符
双目运算符 例:a+=5与a=a+5等价。
7.条件运算符(唯一的三目运算符)
例:a1?a2:a3 先计算a1的值,如果非0则a2的值,如果0则a3的值
8.位操作运算符
会事先化成二进制在进行相关操作。
9.求字节大小运算符
size of(<类型说明符或表示式>)
10.强制转换运算符
将指定表达式的值强制转换为所指定类型
(<所指定的类型>)(<表达式>);
11.单目运算符&和*
&:取变量的地址值
*:取指针变量所指变量的值
2.2.2
1.表达式中的隐含转换
int->unsigned->long->unsigned long->long
short,char自动转成int float自动转换成double - 只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。
优先级和结合性具体表格:https://blog.csdn.net/lfb_2048/article/details/62040608
2.3数组
1.数组定义格式:<类型> <数组名>[<下标1>][<下标2>] ……
例:int a[3]一维整形数组 int a[2][3]二维整形数组 int a[3][4][5]三维整形数组
2.数组表示
例:int a[3] 数组包含3个整形元素a[0] a[1] a[2]
int a[2][2] 数组包含4个整形元素a[0][0] a[0][1] a[1][0] a[1][1]
注:从标号0开始,赋值个数要小等于下标个数。
3.数组的初始化
1)一维数组的初始化
int a[3]={2,3,4 } ; //给出元素下标
int a[ ]={2,3,4 } ; //省略数组下标
int a[3]={4,6 } ; // a[2]没有被初始化·
注:数组初始化时,如果数组所含元素与赋值元素的个数相同则下标可省略,如果数组所含元素与赋值元素的个数不同,则不可省略下标。
2)二维数组的初始化
int b[2][3]={1,2,3,4,5,6 };
int b[ ][3]= {1,2,3,4,5,6};
int b[2][3]={{1,2,3},{4,5,6}};
三种初始化方式等价。
注:对于二维数组来说,第二个下标无论如何都不能省略。
3)三维数组的初始化
Int c[2][2][2]={1,2,3,4,5,6,7,8};
Int c[2][2][2]={ { {1,2}, {3,4} },{ { 5,6 },{ 7,8} } };
注:采用{ }嵌套,来实现多维数组的赋值,如果赋值元素个数少于数组元素个数,采用这种按行赋值方法更清晰。
4.数组的赋值
例:int a[3];
a[0]=1;
cin>>a[1];
例:利用for函数对数组进行赋值
int a[2][3];
int i,j ;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
cin>>a[i][j];
}
注:数组赋值前,必需事先定义,另外元素的引用标号为下标最大值减1,不能超过这个范围。
2.3.5字符型数组(特殊性)
1.字符数组初始化
一维数组用来存放一个字符串,多维数组用来存放多个字符串。区别于其他的类型的数组逐个初始化需要额外加上‘’,打包初始化需要加上“ ”
(1)一维字符数组初始化
char s1[4]={‘1’, ‘2’,‘3’};
char s2[4]={ ‘1’, ‘2’,‘3’, ‘\0’};
char s3[4]=“123”
三种方式效果等价
注:字符数组初始化后,系统会自动加一个‘\0’
字符传数组最佳初始化方式: char s[ ]=“123”
(2)二维数组初始化
char c[2][2]={ {‘1’,‘2’ },{‘1’,‘2’ } };
char c[2][2]={“12”,“12”};
char c[ ][2]={ “12”, “12”};
(3)三维数组初始化与二维类似。
2.4 枚举类型
某个变量的取指仅限于集合中的元素,且集合中元素个数有限。
2.4.1
枚举类型的定义:
Enum <枚举类型名>{<枚举元素表>};
例:enum weekday{sun,mon,tue,wed,thu,fri,sat };
注:enum是枚举类型的合法标识符,{ }内的值是枚举类型所有可能的枚举常量列表,定义中的枚举常量不能同名。默认情况下第一个枚举常量值为0,其后的常量的值顺次加1,也可以由用户定义。
例: enum weekday{sun=7,mon=0,tue,wed,thu,fri,sat }; //定义时用户给出每一个枚举常量值
此时 sun=7,mon=0,tue=1…
注:不能给已经定义过得枚举常量赋值
例:enum weekday{sun=7,mon=0,tue,wed,thu,fri,sat };
Sun=5;//错误,sun是枚举常量不是变量
2.4.2 枚举变量的定义
1)先定义枚举类型后定义枚举变量
enum weekday{sun,mon,tue,wed,thu,fri,sat };
enum weekday day1,day2;
定义了两个weekday类型的枚举变量day1,day2
2)定义枚举类型的同时定义枚举变量
enum weekday{sun,mon,tue,wed,thu,fri,sat }day1,day2;
3)直接定义枚举变量
enum {sun,mon,tue,wed,thu,fri,sat }day1,day2;
2.4.3枚举变量的赋值
枚举变量的值必须是枚举范围之内否则出现语法错误。如果要用枚举类型列表中的某个枚举常量所代表的整型值给枚举变量赋值,必须进行强制类型化转换。
例: day2={enum weekday}(6);
2.5结构体类型
可以包含多种类型的数据类型。
2.5.1结构体类型的定义
struct <结构体类型名>
{
<成员类型名1> <成员1>;
<成员类型名2> <成员2>;
……
} ;
注:不要遗漏最后的分号
2.5.2结构体变量的定义和初始化
1)先定义结构体类型再定义变量
Struct point
{
int x,y;
double degree;
char name[8] ;
};
point a,b;
2)定义结构体类型的同时定义变量
Struct point
{
int x,y;
double degree;
char name[8] ;
} point a,b;
3)直接定义结构体变量
Struct
{
int x,y;
double degree;
char name[8] ;
} point a,b;
注:以上三种方式以第一种初始化方式为佳。
2.5.3 结构体变量的引用
结构体变量通过“.”对其成员进行引用和赋值
结构体类型指针通过“->”对其成员进行引用和赋值
注:1)如果一个结构体成员本身又有是一个结构体类型,则采用逐级引用的方法直到最低一级的成员。
2) 结构体变量的成员可以像同体类型的其他变量一样,进行各种运算。
3) 允许对结构体变量进行整体操作,例如将一个结构体变量整体赋给另一个。
2.6共用体变量
2.6.1共用体类型的定义
与结构体类型定义类似,只把关键字struct 换成union 即可
例:union point
{
int x,y;
double degree;
char name[8] ;
};
2.6.2共用体变量的定义
与结构体变量定义类似,不能在定义共用体变量的同时对其进行初始化,但可以对第一个成员进行初始化。
例:union point
{
int x,y;
double degree;
char name[8] ;
}point1={1,2 ,85,“middle”}; //产生语法错误
例:union point
{
int x,y;
double degree;
char name[8] ;
}point1={1,2}
2.6.3 共用体变量的引用
注:1)共用用成员不能同时使用,在同一时刻只能是一个成员的一种类型起作用
2)共用体变量所用成员共用一段存储空间,只能保存最后存放的值即后来的值可
覆盖之前的值,故只能使用最后一次给定成员的值。
3)共用体变量的地址和其他成员的变量的地址相同,但它们的空间大小与成员变
量的的最大空间相同。
4) 共用体可以和结构体进行相互嵌套
5)c++允许两个共用体进行辅助
6)函数返回值类型不能是共用体类型,函数参数类型也不能是共用体类型。
2.7 控制语句
选择结构语句: if if-else switch
循环结构语句: while for do-while
转向结构语句: break continue return goto
Break语句:1)在switch中是退出开关语句,执行switch后的语句
2)在循环体中,其功能是退出本次循环。
Continue语句: 只能用于循环语句中,功能是结束本次循环,回到循环条件,判断是
判断是否进行下次循环。
Goto语句:通常与语句标号共同使用
例:loop: i++;
s=s+i
if(i<=10) goto loop ;
注:在每一个函数中语句标号是唯一的,其goto语句只能在一个函数体内进行转向,目
的是保证函数是最小的结构化单元。