The Art and Science of C (C语言的科学与艺术) 已经读完4章了,这确实是本非常不错的Programming类书籍,我喜欢它循序渐进的讲述方法,讲问题不拖泥带水也绝不含糊,不像国内那位谭某人写的传说中的经典版C语言教材,废话一大堆还没讲明白个所以然,而且那是相当的过时啊,要知道这本The Art and Science of C 还是94年出版的。总而言之,我们在用本世纪的国内垃圾教材学习早在上世纪90年代前期就已过时的知识。废话完毕,正式开始笔记:
1. 一定要记得在main
程序段前加入需要的库,最基本的两个就是:
#include <stdio.h> #include "genlib.h" main() { ... }
习惯在Win下用Turbo C编写C程序的人最容易忽视这两个库文件了,因为Turbo C是默认就为程序引用这两个库的。如果你在linux下用gcc编译C程序的话,没有加入库文件它会有警告提示的。
2. linux下编译C程序的方法是,gcc -o hello.out hello.c
,编译hello.c的程序并生成hellp.out的执行程序,如不使用-o hello.out
参数指定输出执行程序的名字的话,会默认输出名为a.out的执行程序。使用./ hello.out
来进行函数赋值输入
3. 还在使用对于scanf
进行输入操作?这个方法在94年就不提倡了。int
型,可以使用var = GetInteger
来输入赋值,double
型可以使用var = GetReal()
, string
型则是var = GetLine()
。
printf("Please assign a value for n"); /*你可以用scanf
来搞定*/ scanf("%d",&n); /*现在你可以用GetInteger
操作,它看起来更符合现代程序的书写习惯*/ n=GetInteger();
4. 两个int
值运算结果还是int
,只要有一个是double
,无论另一个是int
还是double
其运算结果都是double
。当然指定了数值类型那就不一样了,看以下实例分析:
/*两个int
型相加其结果还是int
型*/ 1 + 1 = 2 /*有一个是double
型其结果就是double
了*/ 1.0 + 1 = 2.0 /*通过在数值前使用(int)
来指定数值类型会自动去尾(truncated)将其转换为int
型。*/ (int)1.0 + 1 = 2 /*=号运算是从右到左,d = i = 1.5
相当与d = (i = 1.5)
,因为i是int
型,所以i 的值为1,但又因为d是double
型,所以d的值是1.0。*/ double d; int i; d = i = 1.5;
5. printf("%-10d",n)
的意思不是显示时给n赋予负值,而是通过给定的10位宽度,- 号表示在这10位宽度里从左对齐(left-aligned)显示,这个- 号在table布局显示数据时很有用。
6. main() {}
其实就是个程序(function),每个function都是由function() {content}
结构组成的而已。
7. 养成良好的代码书写习惯和风格,Good style and program readability are critical for program maintenance。例如:
/* * File : hello.c * ---------------- * Description : To display hello text and show what a basic C program is */ #include <stdio.h> #include "genlib.h" #include "simpio.h" /* Main program */ main() { int i; printf("Please assign a value for i"); i = GetInteger(); printf("I = %d",i); }
给于程序适当的解释说明信息,以及注意程序块的缩进(indentation)以提高可读性。
有用,现在看还明。不知道再往后还能不能跟上。继续!
好像我们学习的时候都讲不调用函数的,比较麻烦。
用了库函数调用,感觉程序简化,简单了很多