1. 基础概括。
C能做什么:嵌入式开发、操作系统、驱动开发、引擎开发、高性能游戏开发....
C语言执行过程:
编写c文件--> 编译.c文件 --> .obj文件 --> 连接stdio.h 生成可执行文件.exe --> 最后执行。
注释: // 单行注释
/* 多行注释 */
#include<stdio.h>
// 预处理,程序在运行之前,需要提前做的事情。
关键字:被C语言赋予了特殊含义的 单词。
常量:在程序执行过程中,其值不能发生改变的数据。
整型常量、实型常量(有小数点)、字符常量('a', 只能是字母、数字、英文字母)、字符串常量("abcd")
.93 等价于0.93
18.0 等价于18.
1.1.格式控制符(占位符)
整型 %d decimal
实型 %f floating-point
字符 %c char
字符串 %s string
long %ld long类型。
double %lf double类型。
printf("age: %d", 22 +3); // 占位符
printf("name is: %s,\n 性别:%s,\n age: %d\n", "小丽", "女", 44); // 占位符 输出多个常量,要一一对应。
换行符: \r\n, \r, \n
\r回到行首; \n到下一行。
1.2 变量:经常发生改变的数据
int a = 10;
数据类型:为盒子中存储的数据,加入类型的限制。限定是整数,小数...
变量在使用之前,必须先初始化赋值。
变量名不允许重复定义。
1.3 计算机的存储规则
二进制:逢二进一,借一当二。0x01
计算机中,二进制可以表示万事万物。
数字:先转成二进制,再存储。
ASCII码表:字母先转成数字,再二进制存储。
汉字:GB2312编码、GBK编码、Unicode编码。查询对应的码表,转数字二进制,再存储。
图片:分辨率、像素、三原色(RGB)。记录每个像素的三原色,
声音存储:采样声音波形图,记录音频数据。每个采样点都进行二进制编码保存。
1.4 常见的进制
八进制(Oct):每三bit分成一组,0~7. 作为一个保存数据。 int b = 010; 以0开头。
十六进(Hex):每四bit分成一组,0~15. int c = 0xF0; 以0x开头
二进制(Bin):int a = 0b10; 以0b开头。
十进制(Dec):不要写前缀。
1.5 数据类型
- 决定变量中能存储什么类型的数据;
- 决定存储空间的大小。
int 占用4个字节(32个bit位)。
8个bit 称为一个字节(Byte),也是最小的存储单元。
1024字节 = 1KB
1024KB = 1MB
1024MB = 1GB ...
1.6 整数数据类型。short、int、long、long long(c99才有)。
short (-32768~ 32767 ) 占用2字节。
无符号时,范围(0~ 65535)
int (-2147483648~2147483647), 占用4字节。
无符号范围(0~ 4,294,967,295)
long (-2147483648~2147483647), 占用4字节。
long c = 1000L; // 带后缀L
printf("%ld", c); // 打印long 类型 %ld.
long long d = 2000LL; 占用8字节。
printf("%lld", d);
使用sizeof(a) 可以测量一种数据类型占用多少字节。%zu 表示打印sizeOf的测量结果。
printf("%zu", sizeof(c));
printf("%zu", sizeof(short)); // 可以直接用数据类型,来测量。
无符号整数unsigned。 有符号整数 signed(默认)。
unsigned int index = 90;
printf("%u", index); // 打印无符号整数 %u。
1.7 小数:float,double 科学计数法保存值。
float 4字节
double 8字节,C语言中,小数默认是double类型的。
long double 不常用的高精度小数。
不能和unsigned组合, unsigned只能和 整数类型组合使用。
float: 单精度小数(精确度小数点后6位),windows 占4个字节(38位)
float f1 = 3.14F;
printf("%f", f1);
printf("%.2f", f1); // 保留2位小数
double 双进度(精确度小数点后15位),windows占用8个字节(308位)
double b= 1.78;
printf("%lf", b);
printf("%.2lf", b);
总结:
- 取值范围:double > float> long long >long > int >short
- 后缀:long(L), long long(LL), float(F)
1.8 字符类型 char,占用1字节。取值范围只能是ASCII码表里面的。
char c = 'a';
printf("%c", c);
1.9 标识符
代码中所有我们自己起的名字,比如变量名、函数名等。
- 由数字、字母、下划线组成
- 不能以数字开头
- 不能是关键字。
- 用英文单词,简明知意。全部小写,使用下划线隔开。
- 代码的文件名:全部小写,单词间下划线分开,开头可以用数字。
1.10 键盘录入。scanf()
define _CRT_SECURE_NO_WARNINGS
include<stdio.h>
int age;
scanf("%d" , &age); // 录入整数。
char str[内存占用大小];
占用大小计算规则:
- 英文:一个英文字母(符号或数字),占用一个字节;
- 汉字:一个中文,默认占两个字节。
- 结束标记(\n):1个字节。
char name[100]; // 名字输入。
scanf("%s", &name);
// 同时录入两个变量。占位符之间可以使用空格隔开。
int a, b;
scanf("%d %d", &a, &b); // 占位符和后面的变量一一对应。
2.运算符。
+ — * /
整数计算,结果一定是整数。小数部分舍弃。
小数计算,结果一定是小数。
整数和小数计算,结果一定是小数。
小数直接参与计算,结果可能不精确。
取余数的细节:
- 1.运算的数据必须都是整数。
- 2.结果余数的正负,跟第一个数据保持一致。
- 3.不能对0取余。
隐式转换:把一个取值范围小的,转成取值范围大的。
short、char类型数据在运算时,先提升为int,再进行计算。
显示转换(强制转换-大变小):有可能会发送数据错误。
把取值范围大的,赋值给取值范围小的,就需要进行强制转换。
(目标数据类型) 变量名= (目标数据类型)数据;
取值范围对比:
char <short<int<long< long long<float< double
赋值运算符:
=,+=,-=,*=,/=,%=
网友评论