C语言学习
Opened this issue · 5 comments
TinyScript commented
C语言数据类型
1. 基本类型
- 数值
- 整形
- 短整型
short
- 整型
int
- 长整型
long
- 短整型
- 浮点型
- 单精度
float
- 双精度
double
- 单精度
- 整形
- 字符
char
2. 构造类型
- 数组
- 结构体
struct
- 共用体
union
- 枚举
enum
3. 指针类型 *
4. 空类型 void
TinyScript commented
数据的分类
- 静态数据
- 动态数据
静态数据
指存储在硬盘中的数据,操作系统关闭了也依旧存在。
如:电脑中的xxx.mp4
文件。
动态数据
指内存中的数据,进程消失数据即消失。
如:通过播放器打开xxx.mp4
文件播放后,此时会把静态数据读入内存条中。删除mp4文件后视频依旧可以播放,但是关闭播放器进程,或者关闭操作系统,就无法再找到该视频的数据了。
TinyScript commented
Scanf
scanf函数用于接收键盘输入的内容, 是一个阻塞式函数,程序会停在scanf函数出现的地方, 直到接收到数据才会执行后面的代码。
格式:scanf("格式控制字符串", 地址列表);
地址列表只能传变量地址,即“&变量”,例如: scanf("%d", &num);
Scanf输入后存在缓冲区
利用setbuf方法清空缓冲区(所有平台有效)
格式: setbuf(stdin, NULL);
TinyScript commented
类型转换
- 强制转换-显示转换
- 自动转换-隐式转换
- 算数转换
- 赋值转换
强制转换-显示转换
(类型)(表达式)
int a = (int)(10.5);
自动转换-隐式转换
算数转换
系统会对内存占用较低的数据做一个「类型提升」,转换为相同类型后再进行计算
// double 1.0为8字节,int 2位4字节
// 2 => (double)2 => 2.0,从int 4字节转为double 8字节
double b = 1.0 / 2
赋值转换
// 按变量定义的类型做存储
int a = 10.6; // => 10
2b青年转换
// 1. 类型提升隐式转换为double,2 => 2.0
// 2. 通过赋值隐式转换为int,0.5 => 0
int c = 1.0 / 2
TinyScript commented
字符串存储
使用 char*
定义变量名可存储中文。
char* result = "字符串";
TinyScript commented
阶段练习
从键盘输入一个整数, 判断这个数是否是100到200之间的数
int d;
scanf("%d", &d);
int value = d >= 100 && d <= 200;
char* result = value ? "是" : "否";
printf("%s\n", result);
表达式 6==6==6 的值是多少?
答案:0
int num = 6 == 6;
int result = num == 6;
printf("%d, %d\n", num, result);
用户从键盘上输入三个整数,找出最大值,然后输入最大值
int d,f,g,max;
printf("请输入第一个数:");
scanf("%d", &d);
printf("请输入第二个数:");
scanf("%d", &f);
printf("请输入第三个数:");
scanf("%d", &g);
if(d > f) {
max = d;
if(d < g) {
max = g;
}
} else {
max = f;
if(f < g) {
max = g;
}
}
printf("最大值:%d\n", max);
用两种方式交换两个变量的保存的值
int a = 10; int b = 20;
int c;
printf("交换前a: %d, b: %d\n", a, b);
c = a;
a = b;
b = c;
printf("交换后a: %d, b: %d\n", a, b);
a = 10; b = 20;
printf("交换前a: %d, b: %d\n", a, b);
a = a + b;
b = a - b;
a = a - b;
printf("交换后a: %d, b: %d\n", a, b);
a = 10; b = 20;
printf("交换前a: %d, b: %d\n", a, b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("交换后a: %d, b: %d\n", a, b);
a = 10; b = 20;
printf("交换前a: %d, b: %d\n", a, b);
a = a * b;
b = a / b;
a = a / b;
printf("交换后a: %d, b: %d\n", a, b);