《C和指针》第三章课后习题解答

 

 

1、在你的机器上,字符的范围有多大?有哪些不同的证书类型,它们的范围又是如何?

答:在main.c文件#include <limits.h>,进入limits.h文件即可看到各个数据类型的最大值最小值。

2、在你的机器上,各种不同的浮点数的范围是怎样的?

答:同1题。

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

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

答:新建一个名为DataType.h的头文件,在16位机和32位机上该头文件的代码分别如下:

//16位机
typedef unsigned char	int8;
typedef int				int16;
typedef long int		int32;

// 32位机
typedef unsigned char	int8;
typedef short int		int16;
typedef int				int32;
typedef long int		int64;

4、假定你有一个程序,它把一个long整型变量赋值给一个short整型变量。当你编译程序时会发生什么情况?当你运行程序时会发生什么情况?你认为其它编译器的结果是否如此?

答:我使用的是Visual studio 2012,在上面编译和运行程序都没有问题。但是控制台显示一行警告信息,提醒可能丢失数据。

警告	2	warning C4244: “=”: 从“long”转换到“short”,可能丢失数据

其它编译器不一定会是同样的结果,有的可能编译不通过。

5、假定你有一个程序,它把一个double变量赋值给一个float变量。当你编译程序时会发生什么情况?当你运行程序时会发生什么情况?你认为其它编译器的结果是否如此?

答:和上题一样,编译和运行程序都没有问题。但是控制台显示一行警告信息,提醒可能丢失数据。

警告	1	warning C4244: “=”: 从“double”转换到“float”,可能丢失数据

6、编写一个枚举声明,用于定义硬币的值,请使用符号PENNY,NICKEL等。

enum MONEY{PENNY=1, NICKEL = 5, DIME = 10, QUARTER = 
  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值