很多高级语言都是从C语言衍生的
很多系统软件都是由C语言编写的
F O R T R A N → A L G O L → C P L → B C P L → B → C → C + + FORTRAN\rightarrow ALGOL\rightarrow CPL \rightarrow BCPL\rightarrow B\rightarrow C\rightarrow C++ FORTRAN→ALGOL→CPL→BCPL→B→C→C++
BCPL与B语言:精炼、接近硬件,但过于简单,无数据类型
简洁性:核心内容少,只有 32 个关键字,9 种控制语句、44 种运算符
条件语句:if…else,switch
循环语句:while,for,do…while
break,continue,return,goto
丰富的数据类型
具有低级语言的特点:与汇编语相近的功能和描述方法,如地址运算和二进制数位
可以对硬件端口进行直接操作
结构化语言,适用于大型程序模块化设计
代码效率高
语法限制不严,程序设计自由度大
可移植性好
通过有限步骤,明确的操作产生问题答案
算法表示
自然语言,传统流程图,N-S流程图,伪代码
常用算法:枚举,递推,递归
计数的方式,数值的表示方式
十进制 0、1、2、3、4、5、6、7、8、9 逢十进一
二进制 0、1 逢二进一
0b101八进制 0、1、2、3、4、5、6、7 逢八进一
061十六进制 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 逢十六进一
0x45整数部分:除基取余,从下至上
小数部分:乘积取整,从上至下
计算机只能识别0和1的形式存储的
数据在计算机内部是以 补码 的形式存储,所有的运算都是以补码存储
正数的原码、反码和补码都是它的二进制
负数的原码, 是将该负数的二进制最高位变为1
负数的反码, 是将该数的原码 除了符号位 以外的 其它位取反
负数的补码, 就是它的反码 + 1
原码的减法不正确,所以引入反码。但反码相同的数相减,得到 -0。但前面的符号没有任何意义,所以引入补码。
一个C语言程序由多个函数组成,每个函数有自己的功能
一个程序有且仅有一个主函数
如果一个程序没有主函数,则这个函数不具备运行能力
程序运行时系统会自动调用主函数,而其他函数需要开发手动调用
int main(){
//other code...
return 0;
}
主函数前的int可以不写或者换成 void
main函数中的 return 0 可以不写
多种写法产生原因
C语言最早的时候只是一种规范和标准(如C89,C11)
标准的推行需要各大厂商的支持和实施,由于各大厂商的各自实施,导致实施的标准不同
注释可以用来解释某一段程序或者某一行代码是什么意思,方便程序员之间的交流沟通
// 被注释内容
使用范围:任何地方
作用范围: 从第二个斜线到这一行末尾
快捷键:Ctrl+/
/* 被注释内容 \*/
使用范围:任何地方
作用范围: 从第一个 /* 到最近的一个 */
单行注释可以嵌套单行注释、多行注释
// aa // vvvvvv
// /* asdasd */
多行注释可以嵌套单行注释
/*
// asdasd
*/
多行注释 不能 嵌套多行注释
/*
哈哈哈
/*嘻嘻嘻*/
呵呵呵
*/
C语言中具有特殊含义的单词
全部小写
不可用作变量名、函数名等
C语言一共有32个关键字
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|
| char | short | int | long | float | double | if | else |
| return | do | while | for | switch | case | break | continue |
| default | goto | sizeof | auto | register | static | extern | unsigned |
| signed | typedef | struct | enum | union | void | const | volatile |
char:字符类型变量
int:整型变量
float:浮点类型变量(单精度)
double:浮点类型变量(双精度)
enum:枚举声明
short:修饰 int ,表示短整型
long:修饰 int ,表示长整型
signed:修饰 int ,声明为有符号数据类型
unsigned:修饰 int ,声明为无符号整数类型
struct:结构体声明
union:共用体声明
分支结构
if :条件语句
else :条件语句的否定分支
switch:开关语句
case:开关语句的分支标记
default:开关语句中的其他分支
循环语句
for:循环语句
while:循环语句
do...while:循环语句
跳转语句
continue:跳过语句
break:跳出语句
goto:无条件跳转
return:返回语句,用于返回特定值
存储类型关键字
auto:指定为自动变量
register:指定为寄存器变量
static:指定为静态存储类型
extern:指定对应变量为外部存储类型
const:指定变量为只读变量
volatile:指定变量为易变变量
特殊用途关键字
sizeof:计算数据长度
typeof:声明类型别名
void:空类型