数据类型,可移植性的习题---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指令。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值