APUE第一章_课后习题
/*
未完成的:1.5 不过在下文中已经给出了解答。 */
1.1 在系统上查证,除根目录外,目录.和..是不同的
ans:这个很容易,用vim打开.和..就可以看到区别。
1.2 分析程序清单1-4的输出,说明进程ID为852和853的进程发生了什么情况。
ans:进程852和853也在运行,但是无法知道他们在干什么。
1.3 在1.7节中,perror的参数是用ISO C的属性const定义的,而strerror的整形参数则没有用此属性定义,为什么?
ans: char *strerror(int errnum);
void perror(const char *msg);
如果msg是一个指针的话,则perror可能会改变指针所指的值,所以要用const来限制使之不能更改msg的值。
strerror中的errnum是int值,strerror根本无法改变errnum的值。根据传参的标准。
1.4 在附录B包含了出错记录函数log_doit,当调用该函数时,先保存了errno的值,为什么?
ans:因为errno可能在函数里面执行的时候会改变,所以先保存下来,然后在需要输出的时候输出errno_save.
1.5 若日历时间存放在带符号的32位整形数中,那么到哪一年它将溢出?可以用什么方法扩展浮点数?他们是否与已存在的应用相见兼容?
ans:带符号的32位整形数,最大是2147483647,/(***)=68年。日历时间开始是1970年1月1日00::。+=2038年。
1.6 若进程时间存放在带符号的32位整数中,而且每秒为100滴答,那么经过多少天后该时间值会溢出?
ans: 带符号的32位整数中,最大值是2147483647.所以2147483647/(***)=248天
中文版本是这么说的,但是在英文版本第二问是:What ways can be used to extend the overflow point?
overflow是溢出的意思 point的意思是点,要点 。跟浮点数有什么关系?!!!
根据我的推断意思就是怎么样来解决2038年以后存储的时间。然而课后答案给出的就是用64位来代替32位存储该变量。
完全吻合,看来这个翻译的还是有些问题。
计算带符号的整形数最大值的程序如下
#include <stdio.h>
int main(){
int sum=,haha=;
int i;
for(i=;i<=;++i){
sum+=haha<<i;
}
printf("%d\n",sum);
return ;
}
APUE第一章_课后习题的更多相关文章
- web前端学习python之第一章_基础语法(二)
web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- web前端学习python之第一章_基础语法(一)
web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区 1 引言 1.1 读者定位 我们假设用户在阅读本指南前应已具备以下知识: · 熟悉W ...
- 《Python核心编程》 第六章 序列 - 课后习题
课后习题 6–1.字符串.string 模块中是否有一种字符串方法或者函数可以帮我鉴定一下一个字符串是否是另一个大字符串的一部分? 答:成员关系操作符(in.not in) import string ...
- 《Python核心编程》 第五章 数字 - 课后习题
课后习题 5-1 整形. 讲讲 Python 普通整型和长整型的区别. 答:普通整型是绝大多数现代系统都能识别的. Python的长整型类型能表达的数值仅仅与你机器支持的(虚拟)内存大小有关. 5- ...
- 《数据结构与算法分析:C语言描述_原书第二版》CH2算法分析_课后习题_部分解答
对于一个初学者来说,作者的Solutions Manual把太多的细节留给了读者,这里尽自己的努力给出部分习题的详解: 不当之处,欢迎指正. 1. 按增长率排列下列函数:N,√2,N1.5,N2,N ...
- C Primer Plus_第一章_概览_复习题与编程练习
REVIEW 1.就编程而言,可移植性表示什么? me 一个系统上编写的程序经过很少改动或者不需改动就可以在另一个系统上运行.如果修改是必须的,则通常只改变伴随主程序的一个头文件中的几项内容即可.(P ...
- spring源码第一章_获取源码并将源码转为eclipse工程
1.通过http://gitforwindows.org/下载github 2.通过http://services.gradle.org/distributions/下载gradle:gardle类似 ...
- 算法图解第一章_二分查找_python
什么是二分查找? 我们先玩一个游戏. 在1至100之间我写下一个数,由你来猜测这个数是多少.我会告诉你高了还是低了. 最简单的办法就是每次取一半. 例如 "50""低了& ...
随机推荐
- 用happen-before规则重新审视DCL(转)
编写Java多线程程序一直以来都是一件十分困难的事,多线程程序的bug很难测试,DCL(Double Check Lock)就是一个典型,因此对多线程安全的理论分析就显得十分重要,当然这决不是说对多线 ...
- sublime3的licence(update 2016-04-14)
—– BEGIN LICENSE —–Michael BarnesSingle User LicenseEA7E-8213858A353C41 872A0D5C DF9B2950 AFF6F667C4 ...
- Map的3种遍历[轉]
Map<String, String> map = new HashMap<String, String>(); map.put("A", "AA ...
- TableViewCell的分割线显示不全解决方法
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath ...
- VMware虚拟机的CentOS无法上网的解决方法
前言:由于Linux下很多软件安装必须网络环境下进行,因此,对于如何在VMware下进行上网,我折腾了至少三天,今天上午,也即五一劳动节,终于搜到一遍技术文章,经过自己实践,VMware下Linux的 ...
- linux 去掉 ^M
要去除他,最简单用下面的命令: dos2unix filename 亲测可用 以下方式不可以: set ff=unix %s/^M//g 可能是^M输入方式有问题 ^M 输入方法: ctrl+V ...
- springMVC整合spring和hibernate4(适合于框架的搭建)
基础的东西不再详细说明,只在这里说明一下主要的配置文件,如何通过配置文件取得sessionFactory . 步骤: 1:在web.xml中引入springmvc的配置文件springmvc.xml( ...
- spring项目中使用weblogic的连接池
1.首先在weblogic控制台中配置好一个数据源 我这里建立的数据源的名称叫 jdbc/app1,JNDI名称也叫 jdbc/app1 2.在spring中配置数据源的时候,做如下配置: <b ...
- 【转】find命令
Linux中find常见用法示例·find path -option [ -print ] [ -exec -ok command ] {} \;find命令的参数: pathname: find命令 ...
- cocos2d3.0跑酷代码讲解和源码
最近在网上看到一个跑酷代码的例子,写的很不错,连接如下 http://www.waitingfy.com/archives/783 现在我把他精简了一下,去除了一些比较简单的特效,着重保留了主角的跳跃 ...