一 计算机语言
'C语言'是一门计算机语言!
概念:'人'和'计算机'交流的语言-->C/C++、Java、Python
'社会'语言: 英语、汉语、日语-->'人和人'通信
计算机语言的发展:计算机'只能识别'二进制语言[只有0、1]
(1)语言的发展过程
+++++++++++++++++++++++'早期'+++++++++++++++++++++++
1) 电脑[PC]是硬件、'通电'、只有'高点平'正电(1)|'低点平'负电(0)
备注:计算机只能'处理'的是'电信号',也就是'0和1'这样的东西-->'二进制数据'
补充:数字、模拟信号
eg:计算加法-->'数据'和'符号'全部都用'二进制'序列表示
缺点:早期查手册、只有科学家才'掌握'
+++++++++++++++++++++++'然后'+++++++++++++++++++++++
2) 汇编语言的产生
具体:给'特定二进制序列'起一个名字--> 帮助记忆的符号【'助记符'】
eg:1000001序列表示'加法'-->ADD【现在】
备注:用'助记符'来表达的'语言'叫'汇编语言'!
+++++++++++++++++++++++'最后'+++++++++++++++++++++++
3) 高级语言
汇编'门槛'太高,只有'少数人'可以编程;
优化:一句话代表'好多汇编语言'-->'B'语言-->'C'语言-->'C++'(高级语言)
语言'发展':低['层']级语言到高['抽象']级语言;越来越简单['全民学python']
(2)C语言发展
C语言的'发展'过程:早期'不是很成熟'-->'成熟'-->'流行(popular)'
1) '不成熟'阶段
各家公司'定制'开发-->'不统一'-->你的'不能'在我的上面'跑'
2) '成熟'阶段
C语言的国际标准('ANSI' C89)-->'C90'(ISO)-->'C99'-->C11
备注:C99/C11并'不流行',不少的编译器'不支持'相关语法;但是当前似乎是'C99'的标准是当前'主流趋势'
C语言'国际标准'规范:大家都认可,导致'更加流行'
二 杂乱知识
'初识'-->大概认识、'简单'认识-->'点到为止'-->有这么个东西,后续'细讲'
(1)C语言常见的编译器
(2)main函数
#include <stdio.h>
int main(){
printf("Hello C!\n");
}
+++++++++++++'解读'+++++++++++++
1) 工程化组织方式 .h头文件;.c源文件
2) printf是'库函数':C语言'本身提供'给我们使用的函数;是stdio.h文件中提供的
备注:printf是'别人提供'的东西,要使用'必须'先打招呼;打'招呼'的方式-->#include
3) #include <stdio.h> -->包含一个叫作stdio.h的文件;引用一个头文件
'stdio'-->standard input output(标准输入输出)
4) int main --> main前面的'int'表示'main函数调用'返回一个'整型值'
细节:void main() -->'过时'
备注:return 0; // 返回
(3)C语言的基本数据类型
1) 计算机语言'描述'现实世界
举例: 年龄【整型】、身高【浮点型】
2) long long -->'C99引入'
3) 双精度'小数位'比单精度高-->更精确
4) 创建变量会根据'变量类型'向'内存'申请'对应'空间大小
举例: 书放到书架上['存储']-->'首先'内存申请空间
(3) 基本数据类型的大小
问题: 每种类型的'大小'是多少
1) sizeof(char|short|int) -->根据'对应变量类型'向'内存'申请'相应'空间大小 -->unit是'字节'
2) C语言'没有'字符串类型
3) long(可能是4或8)-->涉及'C语言的标准'sizeof(long)'>='sizeof(int);这个'取决于'32/64位平台
(4)为什么出现这么多的类型
计算机最位:bit(比特位-->'最小单位')、byte(字节)、kb(1024个byte)、mb、gb、tb、pb
1byte=8bit
备注:一个比特位可以表示'0'或'1'
权重:每一位的'权重'不同
1) 123[10进制] = 100 * 1+ 2 * 10 + 3 *1
2) 010[2进制]= 0*2^2 + 1*2^1
++++++++++++++'原因'++++++++++++++
1)数值'范围'不同
2)'内存'空间
思考:人的'age'小于200岁,用short和int的区别?
后者:占用'空间'更多['4字节'],造成资源'浪费',所以要'合理'的申请空间
补充:4个字节-->32bit位-->表达'数字范围'[0, 2^32-1];'大材小用'
现在:空间'不浪费'-->age 用short 表示-->2个字节-->2^16 -1-->更加'合理',节省空间!
3)更加'丰富'的表达生活中的各种值
(5)printf输出函数
++++++++++++++'常见的占位符'++++++++++++++
%c -->打印'字符格式[character]'的数据;
%d -->打印整型'十进制[digit]'数据-->age
%f -->打印'浮点数'-->小数(float)
%lf -->打印'双精度'(double)
%p -->以'地址'的形式打印
%x -->打印'16[0x]进制'数字-->'重点'
%o -->打印8进制
(6)变量定义
char'变量类型' ch'变量名' = 值
1) 先声明-->根据'变量的类型'申请在内存中'开辟'相应的空间
2) 将值'保存'在该'变量标识'的内存空间中
备注: '&ch'表示该变量的'地址'
补充: 变量是'申请空间'的代名词
++++++++++++++++++++'细节'++++++++++++++++++++
float weight=65.5
备注: 可能存在'精度丢失'问题-->双精度会'强转'成单精度-->'警告'信息
float weight=65.5f // 建议方式
(7)局部变量和全局变量
核心: C语言'描述'常量和变量的'方式'
全局变量-->定义在'代码块({})之外'的变量-->'函数外'
局部变量-->定义在'代码块({})之内'的变量-->'函数中'
++++++++++++'注意事项'++++++++++++
1) 全局变量和局部变量'能同时存在'
备注:局部变量和全局变量的'名字相同'的时候,局部变量'优先'
2) 局部变量和全局变量的名字建议'不要相同',容易引起'歧义(误会)',产生bug
(8)变量的作用域和生命周期
'局部变量'作用域:变量哪里可用,哪里就是它的作用域!
'全局变量'的作用域:整个'工程'
'main函数的'声明周期='全局变量'的声明周期='整个程序'的生命周期
(9)scanf
scanf("%d%d",&num1,&num2) -->输入数据['空白字符'分割],使用输入函数!
功能:C语言标准函数库中的'格式化输入函数'
&:'取地址'符号 -->把'第1个'数字放到这个num1地址处;把'第2个'数字放到这个num2地址处
C语言语法'规定':变量要定义在当前代码块的'最前面'!!!