1. 变量
1.1 定义
简单来说,在内存中能开辟一个空间,存储一个值,就是变量。它在程序运行过程中会发生变化,且只能被定义一次。
1.2 格式
存储类型 数据类型 变量名
例如:auto int a;
auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存,一般省略不写。
1.3 存储类型
数据类型决定开辟空间的大小
数据类型 | 字节大小 | 取值范围 |
char:字符型 | 1 | -128~127 |
int:整形 | 4 | -2^31 ~ 2^31-1 |
short:短整型 | 2 | -2^14 ~ 2^14-1 |
long:长整型 | 4或8 | -2^31 ~ 2^31-1 |
float:单精度浮点型 | 4 | 有效位数6~7 |
double:双精度浮点型 | 8 | 有效位数15~16 |
1.4 全局变量和局部变量
局部变量 | 全局变量 | |
定义位置 | 函数体内部 | 函数体外部 |
初值 | 未初始化时,值为随机值 | 未初始化时,值为0 |
存储位置 | 栈区 | 全局区 |
生命周期 | 同当前函数体共存亡 | 同整个程序共存亡 |
作用域 | 函数内部 | 整个程序 |
2. 常量
2.1 整型常量
八进制:012,-012;表示八进制时,在前面+‘0’
十进制:89,-98.
十六进制:0xf,-0x12;表示十六进制时,在前面+‘0x’
2.2 字符常量
- 用 ' ' 包裹,表示字符。
- 用 " " 包裹,表示字符串。
2.3 浮点常量
就是我们常说的小数,2.32,3.1415。
2.4 (标识常量)宏定义
格式:#define 宏名 常量值或表达式或函数
#define N M+m
#define N 5
#define SQR(X) X*X
宏定义,在程序编译时,只是单纯的替换
#include<stdio.h>
#define M 5
#define N M+M
int main(){
int k = 5;
k = N * N * k
printf("%d\n",k);
return 0;
}
我们看这个代码,按照我们平常的思维,N在被替换的时候应该加(),但是只是单纯替换,所以正确的打开方式是:k = 5+5*5+5*k
3. 变量常量的输入输出
3.1 字符输入输出
getchar | putchar | |
功能 | 在终端输入字符 | 在终端输出字符 |
参数 | 无 | 字符的ASCII码值 |
返回值 | 字符的ASCII码值 | 字符的ASCII码值 |
3.2 按格式输入输出
3.2.1 printf(输出)
%c | char |
%d | int |
%f | float |
%if | double |
%s | string |
%p | 指针 |
%o | 八进制 |
%x | 十六进制 |
%m.n : m表示位宽,n表示保留几位小数
3.2.2 scanf(输入)
int scanf(const char *format, ...);
功能:按格式终端输入
参数:多个
返回值:正确输入字符的个数
开始位置输入错误,返回0
4.分支结构
4.1 if
4.1.1 普通if
if和我们人类平成的思维是一样的,如果......就......否则......
格式:if(表达式1)
{
语句块1;
}else
{
语句块2;
}
执行顺序:表达式1成立,则执行语句块1,否则执行语句块2
4.1.2 多层分支
if(表达式1)
{
语句块1;
}
else if(表达式2)
{
语句块2;
}
else
{
语句块3;
}
执行顺序:表达式1成立,则执行语句块1,表达式2成立,则执行语句块2,否则执行语句块3
4.1.3 嵌套
if(表达式1)
{
if(表达式 2)
{
语句块1;
}
}
执行顺序:表达式1成立,且表达式2也成立,则执行语句块1
注意!:
- if后边可以没有else,else前边必须有if
- 分支语句只有一行的时候,可以省略 { }
4.2 switch
格式:
switch(变量名或表达式)
{
case 常量1:
语句块1;
break;
case 常量2:
语句块2;
break;
default:
语句块3:
break;
}
default为case中没有的其他值,通俗来讲就是上面多层分支中的else
//红绿灯,1绿,0红,2黄
int score = 1;
switch(a)
{
case 0:
printf("停!!!\n");
break;
case 1:
printf("行!!!\n");
break;
case 2:
printf("减速!!!\n");
break;
default:
break;
}
注意!:
-
case常量一般是整型或字符
-
case后边可以没有break,程序会从符合条件的分支开始继续向下执行,直到遇见break为止,或执行到分支结束
小练习:
int a = 10; switch(a) { case 0: a++; case 10: a++; case 11: a++; default: a++; } printf("%d\n",a);
答案是 13 你算对了吗
继续加油!!!
如有错误,欢迎大家指正!