zx824

生活需要宁静的心,否则感悟不到静之美;学习需要宁静的心,否则心浮气躁,欲速则不达。希望永远保持一颗宁静的心。。。。 ...

数据类型,可移植性的习题---c和指针

3.13-3

题目:

假定你正编写一个程序,它必须运行于两台机器上。这两台机器的缺省整型长度并不相同,一个是16位,另一个是32位。而这两台机器的长整型长度分别是32位和64位。程序所使用的有些变量的值并不太大,足以保存于任何一台机器的缺省整型变量中,但有些变量的值却交大,必须是32为的整型变量才能容纳他。一种可行的解决方案是用长整型表示所有的值,但在16位机器上,也存在时间和空间的浪费问题。

如果想让这些变量在任何一台机器上的长度都合适的话,你应该如何声明它们呢?正确的方法是不应该在任何一台机器中编译程序前对程序进行修改。提示:试试包含一个头文件,里面包含每台机器特定的声明。


解答:

声明整型变量名,使变量的类型必须有一个确定的长度(如int8、int16、int32)。对于你希望成为缺省长度的整数,根据它所能容纳的最大值,使用类似defint8、defint16或defint32这样的名字。然后为每台机器创建一个名为int_sizes.h的文件,它包含一些typedef声明,为你创建的类型名字选择最合适的长度。

在一台典型的32位机器上,这个文件将包含:

typedef  signed  char    int8;

typedef  short  int          int16;

typedef  int                    int32;

typedef  int                    defint8;

typedef  int                    defint16;

typedef  int                    defint32;

在一台典型的16位整数机器上,这个文件将包含:

typedef  signed char     int8;

typedef  int                    int16;

typedef  long int            int32;

typedef  int                    defint8;

typedef  int                    defint16;

typedef  long int            defint32;

你也可以使用#define指令。

阅读更多
个人分类: c/c++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭