设为首页 加入收藏

TOP

C语言入门经典(第5版)之编程初步(一)
2014-11-23 20:25:11 来源: 作者: 【 】 浏览:31
Tags:语言 入门 经典 编程 初步

现在读者一定很渴望编写程序,让计算机与外界进行实际的交互。我们不希望程序只能做打字员的工作,显示包含在程序代码中的固定信息。的确,编程的内涵远不止此。理想情况下,我们应能从键盘上输入数据,让程序把它们存储在某个地方,这会让程序更具多样性。程序可以访问和处理这些数据,而且每次执行时,都可以处理不同的数据值。每次运行程序时输入不同的信息正是整个编程业的关键。在程序中存储数据项的地方是可以变化的,所以叫做变量(variable),而这正是本章的主题。

本章的主要内容:

● 内存的用法及变量的概念

● 在C中如何计算

● 变量的不同类型及其用途

● 强制类型转换的概念及其使用场合

● 编写一个程序,计算树木的高度

2.1 计算机的内存

首先看看计算机如何存储程序要处理的数据。为此,就要了解计算机的内存,在开始编写第一个程序之前,先简要介绍计算机的内存。

计算机执行程序时,组成程序的指令和程序所操作的数据都必须存储到某个地方。这个地方就是机器的内存,也称为主内存(main memory),或随机访问存储器(Random Access Memory,RAM)。RAM是易失性存储器。关闭PC后,RAM的内容就会丢失。PC把一个或多个磁盘驱动器作为其永久存储器。要在程序结束执行后存储起来的任何数据,都应打印出来或写入磁盘,因为程序结束时,存储在RAM中的结果就会丢失。

可以将计算机的RAM想象成一排井然有序的盒子。每个盒子都有两个状态:满为l,空为0。因此每个盒子代表—个二进制数:0或1。计算机有时用真(true)和假(false)表示它们:1是真,0是假。每个盒子称为—个位(bit),即二进制数(binary digit)的缩写。

注意:

如果读者不记得或从来没学过二进制数,可参阅附录A。但如果不明白这些内容,不用担心,因为这里的重点是计算机只能处理0与1,而不能直接处理十进制数。程序使用的所有数据(包括程序指令)都是由二进制数组成的。

为了方便起见,内存中的位以8个为—组,每组的8位称为一个字节(byte)。为了使用字节的内容,每个字节用一个数字表示,第—个字节用0表示,第二个字节用1表示,直到计算机内存的最后—个字节。字节的这个标记称为字节的地址(address)。因此,每个字节的地址都是唯一的。每栋房子都有一个唯一的街道地址。同样,字节的地址唯—地表示计算机内存中的字节。

总之,内存的最小单位是位(bit),将8个位组合为一组,称为字节(byte)。每个字节都有唯一的地址。字节地址从0开始。位只能是0或1,如图2-1所示。

图2-1 内存中的字节

计算机内存的常用单位是千字节(KB)、兆字节(MB)、千兆字节 (GB)。大型磁盘驱动器使用兆兆字节(TB)。这些单位的意义如下:

● 1KB是1 024字节。

● 1MB是1 024KB,也就是1 048 576字节。

● 1GB是1 024MB,也就是1 073 741 841字节。

● 1TB是1 024GB,也就是1 099 511 627 776字节。

如果PC有1GB的RAM,字节地址就是0~1 073 741 841。为什么不使用更简单的整数,例如千、百万或亿?因为从0到1023共1024个数字,而在二进制中,1023的10个位刚好全是l:11 1111 1111,它是一个非常方便的二进制数。1000是很好用的十进制数,但是在二进制的计算机里就不再那么方便了,它是111110 1000。因此以KB(1 024字节)为单位,是为了方便计算机使用。同样,MB需要20个位,GB需要30个位。

但是硬盘的容量可能出现混乱。磁盘制造商常常宣称他们生产的磁盘的容量是256GB或1TB,而实际上这两个数字表示2560亿字节及1万亿字节。当然,2560亿字节只有231MB,而1万亿字节只有911GB,所以磁盘制造商给出的硬盘容量有误导作用。

有了字节的概念,下面看看如何在程序里使用这些内存。

2.2 什么是变量

变量是计算机里一块特定的内存,它是由一个或多个连续的字节所组成,一般是1、2、4、8或16字节。每个变量都有一个名称,可以用该名称表示内存的这个位置,以提取它包含的数据或存储一个新数值。

下面编写一个程序,用第1章介绍的printf()函数显示你的薪水。假设你的薪水是10 000元/月,则很容易编写这个程序。

// Program 2.1 What is a Variable

#include

int main(void)

{

printf(My salary is $10000);

return 0;

}

这个程序的工作方式不需要多做解释,它和第一章开发的程序差不多。如何修改这个程序,让它能够根据存储在内存中的值,定制要显示的信息?这有几种方法,它们有一个共同点:使用变量。

在这个例子里,可以分配一块名为salary的内存,把值10 000存储在该变量中。要显示薪水时,可以使用给变量指定的名称salary,将存储在其中的值10 000显示出来。程序用到变量名时,计算机就会访问存储在其中的值。变量的使用次数是不受限制的。当薪水改变时,只要改变salary变量存储的值,整个程序就会使用新的值。当然,在计算机中,所有的值都存储为二进制数。

程序中变量的数量是没有限制的。在程序执行过程中,每个变量包含的值由程序的指令来决定。变量的值不是固定的,而可以随时改变,且没有次数的限制。

注意:

变量可以有一个或多个字节,那么,计算机如何知道变量有多少个字节?下一节会提到,每个变量都有类型来指定变量可以存储的数据种类。变量的类型决定了为它分配多少个字节。

变量的命名

给变量指定的名称一般称为变量名。变量的命名是很有弹性的。它可以是一个或多个大写或小写字母、数字和下划线( _ )(有时下划线也算作字母),但要以字母开头。下面是一些正确的变量名:

Radius diameter Auntie_May Knotted_Wool D678

变量名不能以数字开头,所以8_Ball和6_pack都是不合法的名称。变量名只能包含字母、下划线和数字,所以Hash!及Mary-Lou都不能用作变量名。Mary-Lou是一个常见的错误,但是Mary_Lou就是可以接受的。变量名中不能有空格,所以Mary Lou会被视为两个变量名Mary和Lou。以一或两个下划线开头的变量名常用在头文件中,所以在给变量命名时,不要将下划线用作第一个字符,以免和标准库里的变量名冲突。例如最好避免使用_this和_that这样的变量名。变量名的另一个要点是,变量名是区分大小写的,因此Democrat和democrat是不同的。

可以在上述限制内随意指定变量名,但最好使变量名有助于了解该变量包含的内容,例如用变量名x来存储薪水信息就不好,而使用变量名salary就好得多,对其用途不会有什么疑义。

警告:

变量名可以包含的字符数取决于编译器,遵循C语言标准的编译器至少支持31个字符,只要不超过这个长度就没问题。建议变量名不要超过这个长度,因为这样的变量名比较繁琐,代码也难以理解。有些编译器会截短过长的变量名。

2.3 存储整数的变量

变量有几种不同的类型,每种变量都用于存储特定类型的数据。有几种变量可存储整数、非整数的数值和字符。一些类型存储特定的数据(例如整数),它们之间的区别是它们占用的内存量和可以存储的数值

首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言图形编程--俄罗斯方块制作(.. 下一篇C语言图形编程--俄罗斯方块制作(..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: