CS61C lec02 笔记

复习

  • 位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 vs. Java (princeton.edu)
请添加图片描述

C的语法和控制流

运算符

C和Java的运算符几乎相同

  • 算术: +, -, *, /, %
  • 赋值: =
  • 增强赋值: +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
  • 按位逻辑: ~, &, |, ^
  • 按位移位: <<, >>
  • 布尔逻辑: !, &&, ||
  • 相等性检验: == , !=
  • 子表达式分组: ( )
  • 顺序关系: <, <=, >, >=
  • 递增和递减: ++ 和 –
  • 成员选择: ., ->
  • 条件求值: ?:

控制流

if-else
while
for
switch-case
主要C语言的标准是有多个标准的,现在常使用C99或C11

因为我已经会C语言了,更多笔记就不记录。

指针(略)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值