上次自學C語言還是在剛開學到國慶期間,聽學姐的建議買了本C語言的書,在軍訓期間的晚上翻翻看看。后來選課、開始正式上課、面試社團、開各種會等等,好像每天都有許多事要忙,但又沒忙出來什么結果,慢慢地好像就把C語言放下了。近日拿出C語言的書再次學習,發現比初學時理解透徹了些。
書中第一章簡要介紹了C語言的歷史和特性、編寫程序的步驟、編譯器和連接器的一些知識和C標準等。使用C語言通常有7個步驟:定義程序的目標、設計程序、編寫代碼、編譯、運行程序、測試和調試程序、維護和修改程序。計算機語言有許多種,我們選擇C語言的理由主要包括它的設計特性、高效性、可移植性、強大而靈活、面向程序員等。當然C語言也有一些缺點,如C語言十分嚴謹、涉及指針的編程錯誤難以察覺等。瑕不掩瑜,C語言的優點比缺點多很多,它仍是最重要的編程語言之一。
第二章以一個簡單程序為例,逐行介紹代碼的含義與細節,了解之后能夠自己編寫簡單的程序,會調用printf()函數,打印一些簡單對話。
不過讓我印象更深的還是關鍵字與變量。
關鍵字如下:
變量有三個基本要素:變量名、變量的數據類型和值。基本數據類型包括關鍵字、有符號整型、無符號整型(只能表示零和正整數)、布爾類型(1表示true,0表示false)、實浮點型、字符型、復數和虛數浮點數。
整數是沒有小數部分的數,浮點數與之相反,二者的儲存方案不同,計算機把浮點數分成小數部分和指數部分來表示,分開儲存這兩部分(即7.00和7在數值上相同,但儲存方式不同)
其中 int 類型、short int 類型、long int 類型、long 類型、long long int 類型、long long 類型 、unsigned int 類型、unsigned 類型均為整數類型(在C90標準中添加了unsigned long int 或 unsigned long 和 unsigned short int 或 unsigned short類型,C99標準又添加了 unsigned long long int 或unsigned long long ,本人電腦在運行當中證實了不支持C99和C11)一般 long long 占64位,long 占32位,short 占16位,int 占16位或32位。對于16位機,short 和 int 最小取值范圍是 -32767到32767;對于32位機,long 的最小取值范圍是-2147483647到2147483647。對于 unsigned short 和 unsigned int ,最小取值范圍是0到65535對于 unsigned long ,最小取值范圍是0到4294967295。 long long 類型是為了支持64位的需求,最小取值范圍是-9223372036854775807到9223372036854775807; unsigned long long 的最小取值范圍是0到18446744073709551615。如果一個數超出了int類型的取值范圍,且在long類型的取值范圍內時,使用long 類型。然而,對于那些long占用的空間比int大的系統,使用long類型會減慢運算速度。如果在long類型和int類型占用空間相同的機器上編寫代碼,當確實需要32位的整數時,應使用long類型而不是int類型,以便把程序移植到16位機后仍然可以正常工作。類似地,如果確實需要64位的整數,應使用long long類型。如果在int 設置為32位的系統中要使用16位的值,應使用short類型以節省存儲空間。通常,只有當程序使用相對于系統可用內存較大的整型數組時,才需要重點考慮節省空間的問題。使用short類型的另一個原因是,計算機中某些組件使用的硬件寄存器是16位。
浮點類型包括float類型、double類型(意為雙精度)和long double類型。float類型必須至少能表示6位有效數字(不是精確到小數點后6位數字)。通常系統儲存一個浮點數要占用32位,其中8位用于表示指數的值和符號,剩下24位用于表示非指數部分(也叫作尾數或有效數)及其符號。double類型和float類型的最小取值范圍相同,但至少必須能表示10位有效數字。一般情況下,double占用64位而不是32位,一些系統將多出的32位全部用來表示非指數部分,不僅增加了有效數字的位數(即提高了精度),而且還減少了舍入誤差,另一些系統把其中的一些位分配給指數部分,以容納更大的指數,從而增加了可表示數的范圍。無論哪種方法,double類型的值至少有13位有效數字,超過了標準的最低位數規定。
不同變量對應的轉換說明也不同,如下示例
如%.2f 中的.2用于精確控制輸出,指定輸出的浮點數只顯示小數點后面兩位。
書中第一章簡要介紹了C語言的歷史和特性、編寫程序的步驟、編譯器和連接器的一些知識和C標準等。使用C語言通常有7個步驟:定義程序的目標、設計程序、編寫代碼、編譯、運行程序、測試和調試程序、維護和修改程序。計算機語言有許多種,我們選擇C語言的理由主要包括它的設計特性、高效性、可移植性、強大而靈活、面向程序員等。當然C語言也有一些缺點,如C語言十分嚴謹、涉及指針的編程錯誤難以察覺等。瑕不掩瑜,C語言的優點比缺點多很多,它仍是最重要的編程語言之一。
第二章以一個簡單程序為例,逐行介紹代碼的含義與細節,了解之后能夠自己編寫簡單的程序,會調用printf()函數,打印一些簡單對話。
不過讓我印象更深的還是關鍵字與變量。
關鍵字如下:


整數是沒有小數部分的數,浮點數與之相反,二者的儲存方案不同,計算機把浮點數分成小數部分和指數部分來表示,分開儲存這兩部分(即7.00和7在數值上相同,但儲存方式不同)
其中 int 類型、short int 類型、long int 類型、long 類型、long long int 類型、long long 類型 、unsigned int 類型、unsigned 類型均為整數類型(在C90標準中添加了unsigned long int 或 unsigned long 和 unsigned short int 或 unsigned short類型,C99標準又添加了 unsigned long long int 或unsigned long long ,本人電腦在運行當中證實了不支持C99和C11)一般 long long 占64位,long 占32位,short 占16位,int 占16位或32位。對于16位機,short 和 int 最小取值范圍是 -32767到32767;對于32位機,long 的最小取值范圍是-2147483647到2147483647。對于 unsigned short 和 unsigned int ,最小取值范圍是0到65535對于 unsigned long ,最小取值范圍是0到4294967295。 long long 類型是為了支持64位的需求,最小取值范圍是-9223372036854775807到9223372036854775807; unsigned long long 的最小取值范圍是0到18446744073709551615。如果一個數超出了int類型的取值范圍,且在long類型的取值范圍內時,使用long 類型。然而,對于那些long占用的空間比int大的系統,使用long類型會減慢運算速度。如果在long類型和int類型占用空間相同的機器上編寫代碼,當確實需要32位的整數時,應使用long類型而不是int類型,以便把程序移植到16位機后仍然可以正常工作。類似地,如果確實需要64位的整數,應使用long long類型。如果在int 設置為32位的系統中要使用16位的值,應使用short類型以節省存儲空間。通常,只有當程序使用相對于系統可用內存較大的整型數組時,才需要重點考慮節省空間的問題。使用short類型的另一個原因是,計算機中某些組件使用的硬件寄存器是16位。
浮點類型包括float類型、double類型(意為雙精度)和long double類型。float類型必須至少能表示6位有效數字(不是精確到小數點后6位數字)。通常系統儲存一個浮點數要占用32位,其中8位用于表示指數的值和符號,剩下24位用于表示非指數部分(也叫作尾數或有效數)及其符號。double類型和float類型的最小取值范圍相同,但至少必須能表示10位有效數字。一般情況下,double占用64位而不是32位,一些系統將多出的32位全部用來表示非指數部分,不僅增加了有效數字的位數(即提高了精度),而且還減少了舍入誤差,另一些系統把其中的一些位分配給指數部分,以容納更大的指數,從而增加了可表示數的范圍。無論哪種方法,double類型的值至少有13位有效數字,超過了標準的最低位數規定。
不同變量對應的轉換說明也不同,如下示例

