C和C++
考研中主要的c语言内容
- 变量、运算符、表达式
- 程序控制 (循环、判断)
- 函数
- 指针、数组、结构体
- 输入与输出
-
类型、运算符、表达式
几种常见类型
变量:可以理解为装数据的容器,内部的数据可以变,但是容器不会变。
int a; //初始化变量
int b;
int c; //也可以int a, b, c;
a = 1;
b = 1; //变量赋值
c = 2;
变量的操作都是先初始化变量,初始化变量时系统会划分一个空间,之后可以进行赋值。
变量名的赋值也有几个要注意的点:- 区分大小写
- 必须以字母开头,不能有特殊符号(只能由数字,字母和_)
- 不能用关键字开头
c语言除了int外还有四个基本数据类型,如下所示
int 整型 长度和机器有关,通常占4个字节
float 单精度浮点型
double 双精度浮点型
char 字符型 占用一个字节长度,可以放一个字符
其余的类型都依赖于上述的基本字符类型进行修饰来的,好比
long int 长整型 不小于 32位
short int 短整型 不小于16位 在int时 int 可以省略不写
unsigned int 无符整形
signed int == int
而 signed char 可存储有符号整数
char 不加限定时视情况而定
常量 :不会变,不要定义,直接用就行。
int a,c;
c = a + 10L; //10为常量,l代表长整型
c = a + 10; //常量int型
c = a + 10.0f //常量float型
c = a + 10.0; //常量double型
常量也可以用O开头的八进制和OX开头的十六进制表达。
字符常量:实际上时对应的ASCII码,也包括转义字符。
字符串常量:≥0的字符就能组成字符串常量(单个字符可以是字符串也可以是字符,没有字符也可以时字符串)
类型转换
为了防止变量间的精度损失
自动转换
float a = 100.5;
int b = a ;//100.5直接被转换为int型,且为100
在转换中会存在精度丢失的情况,且有向更大类型转化的趋势。double型和float型运算最总会转化为double。
数据位少的会向数据位多的转换 int 与unsigned int 运算,int会转化为 unsigned int
short 和 char 运算都会转为 int 转化趋势如下图。
强制转化 :(类型名)表达式 int a = 10;(float) a;
类型转换只体现在结果上,不会改变转换变量的类型,好比上面的a还是int 型,只是转换后a为float型
运算符
+、-、、/、% 加、减、乘、整除(int型整除直接返回整数)、取余(必须都是整型)
++、— 自增、自减 只需要一个变量,但 x++与++x不同。前者先返回值,后自增。
关系运算符
< 、> 、>= 、<= 、== 、!= 关系运算符会返回0 or 1,需要两个值
逻辑运算怒
&& 、|| 、!
赋值运算符
=、 +=、 -=、 =、 /=、 %=
位运算符
&、|、<< 、>>、~
other运算符
sizeof()
? 问号运算符
<表达式1>?<表达式2>:<表达式3>
控制语句
1、分支语句
if(表达式){
语句块
}
if(表达式){
语句块1
}
else{
语句块2
}
if(表达式1){
语句块1
}
else if(表达式2){
语句块2
}
else if(表达式3){
语句块3
}
else{
语句块4
}
switch(表达式){
case 常量表达式1:语句1
case常量表达式2:语句序列2
default:语句序列n
}
正常情况下case满足后会执行后面的所有语句,可以通过在语句末加上break跳出循环。
2、循环语句
while(表达式){
语句块
}
可以加break跳出这个循环或者加contiune跳过此次循环。
for(表达式1;表达式2;表达式3){
语句块
}
等价于
表达式1;
while(表达式2){
表达式3;
}
for( ; ; )无限的for循环
do-while()循环 做了再说
do {
语句块
}
while(表达式);