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指令。
题目:
假定你正编写一个程序,它必须运行于两台机器上。这两台机器的缺省整型长度并不相同,一个是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指令。