/* 未完成的: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 }