/* 未完成的: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,2147483647/(60*60*24*365)=68年。日历时间开始是1970年1月1日00:00:00。1970+68=2038年。 1.6 若进程时间存放在带符号的32位整数中,并且每秒为100滴答,那么通过多少天后该时间值会溢出? ans: 带符号的32位整数中,最大值是2147483647.因此2147483647/(100*60*60*24)=248天
中文版本是这么说的,可是在英文版本第二问是:What ways can be used to extend the overflow point?vim
overflow是溢出的意思 point的意思是点,要点 。跟浮点数有什么关系?!!!函数
根据个人推断意思就是怎么样来解决2038年之后存储的时间。然而课后答案给出的就是用64位来代替32位存储该变量。spa
彻底吻合,看来这个翻译的仍是有些问题。翻译
计算带符号的整形数最大值的程序以下指针
1 #include <stdio.h> 2 int main(){ 3 int sum=0,haha=1; 4 int i; 5 for(i=0;i<=30;++i){ 6 sum+=haha<<i; 7 } 8 printf("%d\n",sum); 9 return 0; 10 }