- 什么是c语言
- C语言是一门计算机语言
- 人和计算机交流的语言
- eg:C/C++/Java/Python
- 计算机语言的发展
- 二进制语言(低级语言)
- 1 0
- 汇编语言
- 将特定序列0 1 表示含义用助记符表示
- 10100001——ADD
- 高级语言
- 二进制语言(低级语言)
- C语言标准
- 国际标准 ANSI C—C89/C90
- 其他标准 C99/C11→不流行,许多编译器不支持
- C语言编译器
- Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C
- C语言是一门计算机语言
- C代码
- .c文件→源文件
- .h文件→头文件
- 写C代码
- 创建工程
- 创建源文件(.c)
- 写代码
- C基本框架
-
int main() { return 0; }
main函数→主函数,程序的入口,从main函数第一行开始执行
-
main函数必须出现,有且仅有一个
-
int→整型;main前面的int表示main函数调用之后返回一个整型值
-
return 0→返回整数(0)
-
{ }内完成任务
-
printf("xxx")打印函数
-
库函数,使用需要用#include< >
-
-
\n表示换行
-
- 数据类型(不同类型向内存申请空间大小不同,申请的方式→创造变量)
- char 字符数据类型
- short 短整型
- int 整型
- long 长整型
- long long 更长的整型
- float 单精度浮点数(浮点型→小数)
- double 双精度浮点数
- 双精度较单精度小数点后能表示数据多一些
- 将字符存起来→
-
#include<stdlib.h> int main() { char ch ="A" printf("%c"/n, ch) return 0; } //向内存申请一块空间来存放字符“A” //char 字符类型 //char ch 创造一个字符类型变量ch(向内存申请空间的名字是ch) //char ch ="A" ch里用=的形式放一个字符A //%c 打印字符格式的数据 //"%c\n", ch 以字符的形式打印ch %后面 %d 打印整型 %c 打印字符 %f 打印浮点数字 (小数) %lf 双精度浮点型 %p 以地址的形式打印 %x 打印16进制数字 %o 8进制 #include<stdlib.h> int main() { int age = 20 printf("%d",age) return 0; } //int age = 20 创建一个整型的变量"age",并为其赋值20 //printf("%d") 打印整型十进制数据 //int 整型 //short int 短整型 //long 长整型 long num = 100 printf("%d\n", num) float f = 5.0 printf("%f\n", f) double d = 3.14 printf("%lf\n", d )
-
- 计算不同数值类型的大小(向内存申请空间的大小)
-
#include<stdlib.h> int main() { printf("%d\n", sizeof(char));// printf("%d\n", sizeof(short));// printf("%d\n", sizeof(int));// printf("%d\n", sizeof(long));// printf("%d\n", sizeof(long long));// printf("%d\n", sizeof(float));// printf("%d\n", sizeof(double));// return 0; }
-
-
计算机中单位:
-
bit 比特位
-
计算机中最小单位
-
计算机是硬件→通电,正电1,负电0,一个比特位存放一个二进制位
-
-
byte 字节
-
1字节=8比特位
-
10110011→一个字节大小
-
-
kb
-
1kb=1024byte
-
-
mb
-
1mb=1024kb
-
-
gb
-
1024
-
-
tb
-
1024
-
-
pb
-
1024
-
-
-
-
char→1个字节
-
short→2个字节
-
两个字节→16个比特位→2^16种可能,可以表示0和2^16-1个数字,可以表示最大数字为65535(实际上第一个比特位为表示正负的符号位,即表示正数时第一位0,表示负数时第一位1,16位的二进制所能表示的最小的负数为1000 0000 0000 0000(其补码(原码符号位不变,其余位取反,然后加1)与原码相同)(负数转十进制时-1取反,还是1000 0000 0000 0000即-2^15),由于±0都表示数学上的0,而二进制储存中十进制的数字-0与16位二进制存储中的最小值1000 0000 0000 0000一样,会造成混淆,因此规定1000 0000 0000 0000表示16位二进制中最小值(算的时候首位位1,对应整数为负,先反再换算,对应大小为0111 1111 1111 1111,符号为负),即-2^15=-32768,而表示正数的时候,最高位为符号位且为0,即最大值为0111 1111 1111 1111,即2^15-1=32767,因此16位的短整型所能表示的范围是【-32768,32767】)
-
0000000000000000→1111111111111111
- 0000000000000000+1→0000000000000001;+1→ 0000000000000010;+1→0000000000000011;+1→0000000000000100
-
short age = 20; 向内存申请2个字节=16bit位,用来存放20(age这个变量)
-
-
int→4个字节
-
long→4个字节或者8个字节
-
c语言标准规定 sizeof(long)≥sizeof(int)
-
不同编译器可能不同
-
-
long long→8个字节
-
float→4个字节
-
软件默认位双精度型,如果想用单精度型表示要在小数后面加个f
-
eg:float weight = 95.6f; f为将双精度变为单精度
-
向内存申请4个字节,存放小数95.6
-
-
-
double →8个字节
-
- 变量、常量
- 变的量与不变的量
- 定义变量的方法
- “类型“” + “变量名” + “=” + “数值”
- int age = 20;
- float weight = 45.5f
- char ch = "w"
- 变量的分类
- 局部变量→定义在代码块{ }之外的变量
- 全局变量→定义在代码块{ }内部的变量
- 局部变量与全局变量相同时,局部变量优先
- 局部变量与全局变量名字建议不要相同—容易误会产生bug
- eg
int num2 = 20; //全局变量 int main() { int num1 = 10; //局部变量 return 0 ; } 注意:全局变量与局部变量可以相同且同时存在,但局部变量优先 如 #include<stdlib.h> int a = 100; int main() { int a = 10; printf("%d\n", a) return 0; } 输出结果为10
- 变量的使用
- 计算两个数的和
- scanf→输入函数,输入数据
#include<stdlib.h> int main() { int num1 = 0; int num2 = 0; int sum = 0; scanf("%d%d", &num1, &num2);//scanf函数→输入函数,输入数据;&取地址符号 sum = num1 + num2; printf("sum = %d\n", sum); return 0; } //语法错误:缺少“;”(在“类型前面”的解决方法):c语言语法中,变量要定义在当前代码块的最前面
- scanf→输入函数,输入数据
- 计算两个数的和
- 变量的作用域和生命周期
- 作用域
- 一段程序代码中所用到的名字并不总是有效/可用的,限定这个名字的可用性的代码范围就是这个名字的作用域
- 变量哪里可以用,哪里就是变量的作用域
- 局部变量的作用域是变量所在的局部范围
- 全局变量的作用域是整个工程
- eg1.局部变量
- 里面大括号内部为作用域,printf不可用 / 外面大括号内部为作用域, printf可用
- 里面大括号内部为作用域,printf不可用 / 外面大括号内部为作用域, printf可用
- eg2.全局变量
- extern:声明外部变量
- 1号工程的全局变量g_val
- 在二号工程中使用(解决未声明的标识符)
- 1号工程的全局变量g_val
- extern:声明外部变量
- 生命周期
- 变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
- 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
- 全局变量的生命周期是:整个程序的生命周期
- 作用域
- ps:还是幕布做笔记好用orz,这个插代码方便一些