上次自学C语言还是在刚开学到国庆期间,听学姐的建议买了本C语言的书,在军训期间的晚上翻翻看看。后来选课、开始正式上课、面试社团、开各种会等等,好像每天都有许多事要忙,但又没忙出来什么结果,慢慢地好像就把C语言放下了。近日拿出C语言的书再次学习,发现比初学时理解透彻了些。
书中第一章简要介绍了C语言的历史和特性、编写程序的步骤、编译器和连接器的一些知识和C标准等。使用C语言通常有7个步骤:定义程序的目标、设计程序、编写代码、编译、运行程序、测试和调试程序、维护和修改程序。计算机语言有许多种,我们选择C语言的理由主要包括它的设计特性、高效性、可移植性、强大而灵活、面向程序员等。当然C语言也有一些缺点,如C语言十分严谨、涉及指针的编程错误难以察觉等。瑕不掩瑜,C语言的优点比缺点多很多,它仍是最重要的编程语言之一。
第二章以一个简单程序为例,逐行介绍代码的含义与细节,了解之后能够自己编写简单的程序,会调用printf()函数,打印一些简单对话。
不过让我印象更深的还是关键字与变量。
关键字如下:
整数是没有小数部分的数,浮点数与之相反,二者的储存方案不同,计算机把浮点数分成小数部分和指数部分来表示,分开储存这两部分(即7.00和7在数值上相同,但储存方式不同)
其中 int 类型、short int 类型、long int 类型、long 类型、long long int 类型、long long 类型 、unsigned int 类型、unsigned 类型均为整数类型(在C90标准中添加了unsigned long int 或 unsigned long 和 unsigned short int 或 unsigned short类型,C99标准又添加了 unsigned long long int 或unsigned long long ,本人电脑在运行当中证实了不支持C99和C11)一般 long long 占64位,long 占32位,short 占16位,int 占16位或32位。对于16位机,short 和 int 最小取值范围是 -32767到32767;对于32位机,long 的最小取值范围是-2147483647到2147483647。对于 unsigned short 和 unsigned int ,最小取值范围是0到65535对于 unsigned long ,最小取值范围是0到4294967295。 long long 类型是为了支持64位的需求,最小取值范围是-9223372036854775807到9223372036854775807; unsigned long long 的最小取值范围是0到18446744073709551615。如果一个数超出了int类型的取值范围,且在long类型的取值范围内时,使用long 类型。然而,对于那些long占用的空间比int大的系统,使用long类型会减慢运算速度。如果在long类型和int类型占用空间相同的机器上编写代码,当确实需要32位的整数时,应使用long类型而不是int类型,以便把程序移植到16位机后仍然可以正常工作。类似地,如果确实需要64位的整数,应使用long long类型。如果在int 设置为32位的系统中要使用16位的值,应使用short类型以节省存储空间。通常,只有当程序使用相对于系统可用内存较大的整型数组时,才需要重点考虑节省空间的问题。使用short类型的另一个原因是,计算机中某些组件使用的硬件寄存器是16位。
浮点类型包括float类型、double类型(意为双精度)和long double类型。float类型必须至少能表示6位有效数字(不是精确到小数点后6位数字)。通常系统储存一个浮点数要占用32位,其中8位用于表示指数的值和符号,剩下24位用于表示非指数部分(也叫作尾数或有效数)及其符号。double类型和float类型的最小取值范围相同,但至少必须能表示10位有效数字。一般情况下,double占用64位而不是32位,一些系统将多出的32位全部用来表示非指数部分,不仅增加了有效数字的位数(即提高了精度),而且还减少了舍入误差,另一些系统把其中的一些位分配给指数部分,以容纳更大的指数,从而增加了可表示数的范围。无论哪种方法,double类型的值至少有13位有效数字,超过了标准的最低位数规定。
不同变量对应的转换说明也不同,如下示例
书中第一章简要介绍了C语言的历史和特性、编写程序的步骤、编译器和连接器的一些知识和C标准等。使用C语言通常有7个步骤:定义程序的目标、设计程序、编写代码、编译、运行程序、测试和调试程序、维护和修改程序。计算机语言有许多种,我们选择C语言的理由主要包括它的设计特性、高效性、可移植性、强大而灵活、面向程序员等。当然C语言也有一些缺点,如C语言十分严谨、涉及指针的编程错误难以察觉等。瑕不掩瑜,C语言的优点比缺点多很多,它仍是最重要的编程语言之一。
第二章以一个简单程序为例,逐行介绍代码的含义与细节,了解之后能够自己编写简单的程序,会调用printf()函数,打印一些简单对话。
不过让我印象更深的还是关键字与变量。
关键字如下:
变量有三个基本要素:变量名、变量的数据类型和值。基本数据类型包括关键字、有符号整型、无符号整型(只能表示零和正整数)、布尔类型(1表示true,0表示false)、实浮点型、字符型、复数和虚数浮点数。
整数是没有小数部分的数,浮点数与之相反,二者的储存方案不同,计算机把浮点数分成小数部分和指数部分来表示,分开储存这两部分(即7.00和7在数值上相同,但储存方式不同)
其中 int 类型、short int 类型、long int 类型、long 类型、long long int 类型、long long 类型 、unsigned int 类型、unsigned 类型均为整数类型(在C90标准中添加了unsigned long int 或 unsigned long 和 unsigned short int 或 unsigned short类型,C99标准又添加了 unsigned long long int 或unsigned long long ,本人电脑在运行当中证实了不支持C99和C11)一般 long long 占64位,long 占32位,short 占16位,int 占16位或32位。对于16位机,short 和 int 最小取值范围是 -32767到32767;对于32位机,long 的最小取值范围是-2147483647到2147483647。对于 unsigned short 和 unsigned int ,最小取值范围是0到65535对于 unsigned long ,最小取值范围是0到4294967295。 long long 类型是为了支持64位的需求,最小取值范围是-9223372036854775807到9223372036854775807; unsigned long long 的最小取值范围是0到18446744073709551615。如果一个数超出了int类型的取值范围,且在long类型的取值范围内时,使用long 类型。然而,对于那些long占用的空间比int大的系统,使用long类型会减慢运算速度。如果在long类型和int类型占用空间相同的机器上编写代码,当确实需要32位的整数时,应使用long类型而不是int类型,以便把程序移植到16位机后仍然可以正常工作。类似地,如果确实需要64位的整数,应使用long long类型。如果在int 设置为32位的系统中要使用16位的值,应使用short类型以节省存储空间。通常,只有当程序使用相对于系统可用内存较大的整型数组时,才需要重点考虑节省空间的问题。使用short类型的另一个原因是,计算机中某些组件使用的硬件寄存器是16位。
浮点类型包括float类型、double类型(意为双精度)和long double类型。float类型必须至少能表示6位有效数字(不是精确到小数点后6位数字)。通常系统储存一个浮点数要占用32位,其中8位用于表示指数的值和符号,剩下24位用于表示非指数部分(也叫作尾数或有效数)及其符号。double类型和float类型的最小取值范围相同,但至少必须能表示10位有效数字。一般情况下,double占用64位而不是32位,一些系统将多出的32位全部用来表示非指数部分,不仅增加了有效数字的位数(即提高了精度),而且还减少了舍入误差,另一些系统把其中的一些位分配给指数部分,以容纳更大的指数,从而增加了可表示数的范围。无论哪种方法,double类型的值至少有13位有效数字,超过了标准的最低位数规定。
不同变量对应的转换说明也不同,如下示例
如%.2f 中的.2用于精确控制输出,指定输出的浮点数只显示小数点后面两位。