C和C++

c可以粗略的看为C++的子集,尤其是在考研中来说。

考研中主要的c语言内容

  • 变量、运算符、表达式
  • 程序控制 (循环、判断)
  • 函数
  • 指针、数组、结构体
  • 输入与输出
  • 文件读写

    类型、运算符、表达式

    几种常见类型

    变量:可以理解为装数据的容器,内部的数据可以变,但是容器不会变。

    1. int a; //初始化变量
    2. int b;
    3. int c; //也可以int a, b, c;
    4. a = 1
    5. b = 1 //变量赋值
    6. c = 2

    变量的操作都是先初始化变量,初始化变量时系统会划分一个空间,之后可以进行赋值。
    变量名的赋值也有几个要注意的点:

    1. - 区分大小写
    2. - 必须以字母开头,不能有特殊符号(只能由数字,字母和_
    3. - 不能用关键字开头

c语言除了int外还有基本数据类型,如下所示
int 整型 长度和机器有关,通常占4个字节
float 单精度浮点型
double 双精度浮点型
char 字符型 占用一个字节长度,可以放一个字符
其余的类型都依赖于上述的基本字符类型进行修饰来的,好比
long int 长整型 不小于 32位
short int 短整型 不小于16位 在int时 int 可以省略不写
unsigned int 无符整形
signed int == int
而 signed char 可存储有符号整数
char 不加限定时视情况而定
常量 :不会变,不要定义,直接用就行。

  1. int a,c;
  2. c = a + 10L; //10为常量,l代表长整型
  3. c = a + 10; //常量int型
  4. c = a + 10.0f //常量float型
  5. c = a + 10.0; //常量double型

常量也可以用O开头的八进制和OX开头的十六进制表达。
字符常量:实际上时对应的ASCII码,也包括转义字符。
字符串常量:≥0的字符就能组成字符串常量(单个字符可以是字符串也可以是字符,没有字符也可以时字符串)

类型转换

为了防止变量间的精度损失
自动转换

  1. float a = 100.5;
  2. 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(表达式);