中国大学MOOC-翁恺C语言-学习笔记(一)

第一部分

  1. 编程语言不是用来和计算机交谈的,而是用来描述要求计算机如何做事情的过程或方法。

  2. 从高到低:算法 -> 程序 -> 计算机

  3. 什么是算法?让计算机做计算时,要先找出计算步骤,然后用编程语言写出来。计算机做的所有事情都叫计算,计算的步骤就叫做算法。

  4. 两种不同的程序执行方式:
    (1)解释:借助一个程序,这个程序会试着理解你的程序。
    (2)编译:借助一个程序,翻译你的程序,翻译成计算机可以理解的程序。

  • 语言本无编译和解释之分,只是常用的执行方式而已。
  • 解释性语言有特殊的计算能力。
  • 编译型语言有确定的运算性能。
  1. 语言的能力和使用领域主要是由库和传统所决定的。

  2. 语言的发展:FORTRAN -> BCPL -> B语言 -> C语言

  3. C语言的发展和标准:
    (1)1989年,ANSI发布了一个标准:ANSI C
    (2)1990年,ISO接受了ANSI的标准:C89
    (3)C95 (4)C99

  • ANSI C只能在代码开头的地方定义变量
  • C99可以在代码的任意地方定义变量
  1. 早期的、面向底层的语言强调类型。C语言就是一种有类型的语言。

  2. 语言的两个方向发展:
    (1)C、C++、JAVA:更强调类型,对类型的检查更严格。
    (2)JavaScript、Python PHP:不看重类型,甚至不需要事先定义。

第二部分

  1. 标识符的构造规则:只能由字母、数字、下划线开头。数字不可以出现在第一个位置,不可以使用关键字(保留字)作为标识符。

  2. C语言不要求变量定义时做初始化,但在使用之前应该被赋一次值。

  3. 整数运算只能得到整数。整数和浮点数一起运算,整数会被当作浮点数。

  4. 浮点数在进行计算时,是由专门的硬件部件实现的。

  5. 运算符分类:
    (1)算术运算符:+、-、乘、/、%、++、–
    (2)关系运算符:>、<、>=、<=、==、!=
    (3)赋值运算符:=
    (4)逻辑运算符:&&、||、!
    (5)复合运算符:+=、-=、乘=、/=
    (6)位运算符:&、|、~、^
    (7)其它:逗号运算符、条件运算符等。

  6. 运算符优先级:
    在这里插入图片描述

注:条件运算符的优先级高于赋值运算符,但低于其它运算符。结合性自右向左。
注:逗号运算符是所有运算符里优先级最低的。

  1. sizeof 运算符:给出某个类型或变量在内存中所占据的字节数。sizeof 是静态运算符,其结果在编译时就决定了。

  2. printf 输出 inf 表示超过范围的浮点数:±无穷大(浮点数/0);printf 输出 nan 表示不存在的浮点数(0/0)。

  3. 对于 printf 来说,任何小于 int 的类型都会被转换成 int,float 会被转换为 double。但 scanf 需明确知道后面变量的大小,如输入 short 类型的值,需使用%hd。

  4. unsigned 的初衷并非为了扩展数能表达的范围,而是为了做纯二进制运算,如移位等。

  5. PAT:浙江大学计算机程序设计能力考试系统。

第三部分

  1. C会在不同类型之间自动转换,故不需要做强制类型转换。C++有时需要做强制类型转换。

  2. 当运算符的两边出现不一致的类型时,C会使之自动转换成能表达的数的范围更大的类型:
    (1)char->short->int->long->long long
    (2)int ->float->double

  3. 强制类型转换:把一个类型的量强制转换成另一个类型(通常是较小的类型)。格式为:(类型)值。如:(int)10.0。

  4. 整数与浮点数的范围:

注:int 是用来表达寄存器的,所以取值范围会发生变化。
在这里插入图片描述

在这里插入图片描述

  1. 八进制的一位数字正好表达3位二进制,十六进制的一位数字正好表达4位二进制。早期计算机的字长是12的倍数,而非8的倍数,故习惯使用8进制。而现在的计算机字长是8的倍数,故习惯使用16进制。

  2. 为了准确地表达内存,且出于做底层程序的需要,整数类型有许多种。现在的CPU字长普遍为32位或64位,且一次内存读写就是一个 int,一次计算也是一个 int。故选择更短的类型不会更快,甚至更慢。因此,若没有特殊需要,使用 int 类型即可。

  3. CPU可以直接对 double 类型做硬件运算,性能不会比 float 差,且在64位的机器上,数据存储速度也不比 float 慢。因此,若没有特殊需要,使用 double 类型即可。

  4. 选择语句(if 语句、switch 语句)
    (1)else 的匹配:else 总是和最近的那个 if 匹配。
    (2)switch 必须是 int 类型,case 必须是常数。

  5. 循环语句的选择(for语句、do-while语句、while语句)
    (1)如果有固定的次数,用for语句。
    (2)如果必须先执行一次,用do-while语句。
    (3)其他情况用while语句。

  6. continue、break、goto

  7. 判断两个小数是否相等的条件:fabs(f1-f2)<1e-12

  • 13
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值