C语言入门笔记(1)
前言
我觉得目前比较好的c语言入门网课有b站的失乐-try上传的C语言入门视频,以及中国大学mooc中浙大翁恺老师的C语言程序设计入门视频。都对新手友好到了极点。我这里选的是翁恺老师的课,比较系统,也比较专业。我会着重指出易错易忘的知识,以便复习,其他不再赘述。
关于对计算机知识的深入理解,我推荐b站搬运的YouTube的计算机科学速成课,里面把计算机的历史,发展,进化讲的相对容易理解些,虽然有些知识我听不懂,但我大为震撼。
编译器
Windows系统推荐dev-C++,当然也可以线上编译,不过不能保存
第一个程序
1 |
|
除了printf函数,剩下的是c语言的基本框架
变量
a = 0;
把0赋值给a,a作为变量保存了数据0,a之后还可变为其它值。
a是一种标识符,只能有字母,数字,下划线组成,数字不能位于头部,关键字不能做标识符。
关键字用多了就记住了,例如char,do,while,if,sizeof….
赋值与初始化
1 | int a; |
这里定义了一个变量a,但你不知道a是几,系统保存的可能是一个任意的数;
1 | int a =0; |
在定义变量时,建议在代码开头的地方定义变量,因为ansi c标准只能在代码开头的地方定义变量,c99标准则无此要求。
a被初始化为0,系统保存的a的值是0。
初始化是一个好习惯,不这样做可能会莫名报错,尤其到指针那一块。
scanf函数
1 | a=0; |
%d意为取整数a,&取地址,让我输入a
常量
1 | b = 1 |
直接写在程序里的1是直接量,是常量的一种。
1 | const int a = 1 |
const作为修饰符加在int的前面,使a成为一个具有常属性的变量,即常变量a不能再被修改,否则会报错。
浮点数
分为单精度浮点数和双精度浮点数,双精度浮点数能保留更多位小数,更精确,%f是取小数。
我们试一下下面的运算
1 |
|
这里输入5,5,结果为3,没有小数
如果输入10 ,10,结果不是6.666…而是6,这里说明4舍5入不符合
这里需要知道%f是取单精度,%lf是双精度
我们再试一下输出小数结果
1 |
|
这里输入5,5,结果为0.000000,又出错了
到这里要指出:
在c语言中两个整数的运算结果只能是整数,用%d得到的是整数,用%f得不到正确结果,如果把3换成3.0,系统在计算时会把a+b的结果化为浮点数,浮点数间的运算就是浮点数。我们再试一下
1 |
|
这里输入5,5,结果正确,为3.333333