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)以提高可读性。