复习
- 位bits能表示所有
- n 位bits最多可以代表 2 n 2^n 2n个事物
- 数字表示
- Unsigned、Bias、1’s、2’s
- Overflow
- Sign Extension
C的基本概念
编译器 | 从C源代码创建可用的程序 |
---|---|
变量类型 | 声明变量的数据类型 |
函数类型 | 声明函数返回的数据类型 |
头文件 | 在头文件中声明函数和变量 |
结构 | 相关值组 |
枚举 | 预定义值列表 |
指针 | 操作地址 |
Basic C Concepts
汇编
- C是一种编译语言
- C编译器将C程序映射导特定的体系结构的及其代码(0-1字符串)
- 与Java不同,Java转换为与体系结构无关的字节码(由JVM运行)
- 与直接解释代码的python不同
- 主要区别在于程序何时映射导低级机器指令
汇编的优势
- 出色的运行时性能:对于类似的代码,通常比Python或Java快得多,因为它针对给定的架构进行了优化
- 公平的编译时间:编译过程(Makefiles)中的增强功能允许仅重新编译修改过后的文件
汇编的劣势
- 编译的文件包括可执行文件,时特定 与体系结构的(CPU类型和操作系统)
- 在不同新系统,可执行文件必须重建
- 移植代码到新的体系结构比较复杂
- ”编辑->编译->运行“的重复过程迭代周期可能很慢
变量类型
C语言中的变量类型
对于C语言,必须先声明变量保存的数据类型,包括int,short int,long int,char,float,double
int的大小是取决于机器的,常见的是4 or 8 bytes(32/64-bit),是不能假设的。可以在int和char前加unsigned。
详细知识回忆C语言定义
字符类型char
- C语言中是将字符通过ASCII标准将字符进行了编码,保证在不同的地方都是相同
- 一个char占用1byte的空间,7bits足够存储一个char( 2 7 = 128 2^7=128 27=128),但是通常增加1bit来舍入到1byte,因为计算机通常要处理多个字节
C中的类型转换
- C是一种weakly类型语言
- 你理论上可以将任何类型显式转换为任何类型,应为所有内存都是存储为bit的,在”程序员视角“是可以改变的
- 你可以将任何类型转换为任何东西,尽管这可能是没有意义的,比如使用结构操作
- 但是,更加自由的操作更可能搬起石头砸自己的脚,一般不随意改变C中的变量类型
C中的类型化函数
- 必须声明函数返回的数据类型,数据类型可以任何C变量类型以及void
- 函数参数的类型也是需要定义的
- 在使用函数前要声明函数
C中的结构
- 结构是一种定义复杂数据类型的方法
- 一组结构化变量可能包括其他结构
- 一般将结构视作对C的指令,让我们在存储中有序地排列一堆bits
结构的定义及其相关操作详看C语言定义,结构为一群复杂的数据提供了空间进行有序管理
C和Java的异同
C的语法和控制流
运算符
C和Java的运算符几乎相同
- 算术: +, -, *, /, %
- 赋值: =
- 增强赋值: +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
- 按位逻辑: ~, &, |, ^
- 按位移位: <<, >>
- 布尔逻辑: !, &&, ||
- 相等性检验: == , !=
- 子表达式分组: ( )
- 顺序关系: <, <=, >, >=
- 递增和递减: ++ 和 –
- 成员选择: ., ->
- 条件求值: ?:
控制流
if-else
while
for
switch-case
主要C语言的标准是有多个标准的,现在常使用C99或C11
因为我已经会C语言了,更多笔记就不记录。