C语言基础
-
进制数
-
计算机常识
-
什么是计算机?
-
能够进行运算的机器就叫做计算机。
-
-
计算机的特点?
-
计算机就是一种电器,只有两种状态,一种通电,一种断电,正因为如此,所以计算机进行运算时,需要很多开关和连接线路来完成,进行一次改动需要很长时间,为了提高效率,能不能把要进行运算的操作和数据存储起来,由冯诺依曼提出了存储程计算机模型-----把操作存储到计算机中。
-
-
计算机如何表示通电和断电状态?
-
用数字0表示断电状态
-
用数字1表示通电状态
-
所以计算机能够识别的指令都是由0和1组成
-
所以计算机存储的数据和操作也都是由0和1组成
-
计算机存储任何内容都只能是通电和断电表示
-
-
计算机数据表示方式
-
1、非移位型数据
-
每个符号就表示对应数据,如:十、二、V、VI
-
-
2、移位型数据
-
每个符号在不同的位置表示的数据大小不同、如:10,100 ,1000
-
-
计算机虽然只有通、断电(即0、1)、可以通过多个通断电状态来表示一个数据值(多个0和1表示,每个0和1在不同的位置表示的数据大小不同)
-
-
计算机存储数据进制
-
由于位移型数据特点可以用在计算机中用来表示数据,即位不同表示数据值不同,就是我们所说的进位计数(进制数),是人为定义的带进位的计数方法。
-
计算机中只认识0和1,所以采用二进制
-
-
二进制
-
每一位只有0和1,对应的位不同表示的大小不同(2^n)、逢二进位一
-
-
十进制
-
每一位只有0~9共十个数,逢十进一
-
-
二进制与十进制之间的转换
-
十进制转二进制、把十进制数除以二、最先进行除法的余数作为最低位
-
十进制数35转二进制
-
二进制转十进制
-
权值:以进制为底、以当前位数作为幂作为对应位的权值
-
-
八进制
-
每一位只能出现0~7,共八个数据值,逢八进一。进位的一代表低位的八,每一位代表8^n
-
-
八进制转十进制
-
二进制转八进制
-
十六进制
-
每一位数值0~15,但是10,11,12,13,14,15,占用两位,需要用特殊字符来代替(可以使用1位)表示
-
A------------------10
-
B------------------11
-
C------------------12
-
D------------------13
-
E------------------14
-
F------------------15
-
十六进制:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、逢16进一,高位的1代表低位的16,每一位的值应该为16^n
-
十六进制转十进制
-
十进制转十六进制
-
十六进制转二进制
-
二进制转十六进制
-
-
-
-
-
C语言简介
-
什么是计算机程序?
-
计算机程序就是为了告诉计算机做某个事情或解决什么问题而设计编写的指令的集合。
只需要让执行程序,计算机就会自动的进行工作,根据程序的内容执行操作。计算机的一切控制都是靠程序进行控制的
计算机只能识别二进制,程序最终的形式是为二进制代码
计算机没做一件事情就是一条指令,一条或者多条指令的集合就是计算机程序。
-
-
计算机语言
-
由于计算机只能识别二进制,需要把我们说的话转换为计算机语言、能够识别的语言(二进制)。如果计算机同时掌握几十门语言甚至上百门语言,只要我们使用任何一门语言计算机都能听得懂(转换为二进制),就可以和计算机交流。
-
计算机语言就是计算机能够识别且能够转换为二进制执行指令的语言,就叫计算机语言。
常见的计算机语言
1.机器语言
-
所有的指令中只有0和1,0表示断电,1表示通电
优点:直接对硬件产生作用,程序的执行效率很高
缺点:指令又多又复杂又难记,可读性差。
2.汇编语言
1.符号化机器语言,用一个符号(单词,数字)来表示一个机器指令
优点:直接产生作用,程序执行效率比较高,可读性稍好
3.高级语言
非常接近自然语言,语法和和结构类似于普通英话
优点:简单、易用、易于理解
缺点:有些改机语言写出的程序执行效率并不高
c语言
C语言是用于和计算机交流的高级语言,就是一种计算机能够识别翻译成计算需要执行的二进制指令
非常接近自然语言,按照人书写的方式进行编写,需要通过翻译变成机器能够识别的机器语言、C语言就是为了方便人进行编写的一种高级语言
程序的执行效率高
C语言版本
-
K&R C(1978年,原始版本)
-
ANSI C(1989年,美国标准协会,对C语言制定了标准,1990年通过了标准、C89、C90)
-
C95(1995年,对C89版本进行了补充)
-
C99(1999年,对C89标准做出了大量的更新,增加了非常多的语言特性,是目前最为流行的版本)
-
C11(2011年,对C语言进行更新,增加了多线程的支持)
-
C17(2017年提出更新,2018年发布,没有任何更新,解决了C11的一些缺陷)
-
C2X
-
-
C语言程序结构
-
对于计算机程序,就是功能指令的集合,如果使用C高级语言写出对应的指令(功能),怎么执行,按照什么顺序执行,从哪里开始执行,c语言都做了规定、要满足C语言的规则
-
对于C语言,实现一些功能后(可以操作计算机完成某些操作),不是随意执行,会有一个执行顺序
-
C语言程序就要规定从哪里开始,执行哪些功能、需要存在程序的执行入口
-
入口:C89
C89
void mian()----------入口
{
执行内容,且只执行{}内的内容
顺序执行
}
C99
int main()-----------入口
{
执行内容,且只执行{}内的内容
顺序执行
}
-
-
编译器
-
每一门高级语言都有一个针对当前语言的翻译工具,把对应语言的程序(使用对应有语言想让计算机执行的指令集合)翻译成计算机识别的二进制指令
-
C语言程序(用C语言写出的指令集合)的翻译工具就叫做C语言编译器
-
gcc 文件名.c
-
生成a.out文件-----a.out文件就是对应的二进制文件
-
执行程序: ./a.out
-
-
-
结构
-
xxx.c----------C语言指令集合(C语言按照C语言语法类似自然语言的规则写出的执行的功能)
-----------C语言源文件
gcc-------------翻译工具,把C程序翻译为机器语言
a.out---------- 目标程序,可执行程序
-----------------二进制程序
-
-
-
C语言基础语法
-
C语言是类似自然语言,要满足一定的语言规则
-
要实现C语言程序(C语言的指令集合),要满足C语言的指令规则(语言规则)
-
基础语法:
-
语句
-
C语言的代码就是一行行的语句构成。语句就是程序的一条操作命令。C语言规定语句(一条操作命令)必须以分号作为结束,除非C语言明确规定可以不写分号
-
-
表达式
-
C语言中各种运算就是使用的表达式。表达式就是一个计算式(进行运算的式子就是表达式),用来获取值(运算的结果)。只要是表达式就有一个运算结果,运算结果出现在运算的位置
-
-
语句块
-
C语言允许多条语句形成一个整体,组成一个块,也称为复合语句,通过加上一组{}表示
-
-
空格
-
在C语言中空格不代表任何含义、为了区别各个的不同单位,增强可读性。
-
-
注释
-
注释就是对代码进行解释、说明、只起到提示作用、编译器不会对注释内容进行编译,对代码无任何实质影响
-
单行注释
-
//------从双斜线开始到这一行结束都是注释
-
-
多行注释
-
/* 注释内容 */
-
-
-
-
-
数据类型
C语言中,每一种数据都有类型、C语言编译器只有知道数据的类型才有办法操作数据
C语言中支持的基本数据类型有三种
1.整型
2.浮点型
3.字符型
复杂的类型也是基于基本数据类型构成
计算机数据单位
-
bit----------二进制(位)
-
Byte------字节==8bit
-
KB---------千字节&