C程式設計語言讀書筆記:型別運算子與表示式

codeman-math發表於2020-12-28

1、變數和常量是程式處理的兩種基本資料物件。宣告語句說明變數的名字及型別,還可以指定變數的初值。所有整型都包含signed(帶符號)和unsigned(無符號)兩種形式,且可以表示無符號常量與十六進位制字元常量,浮點運算可以以單精度進行,還可以使用更高精度的long double型別運算。物件可以宣告為const 表明其值不能修改。
2、下劃線被看做是字母,命名較長的變數,提高其可讀性,庫例的名字通常以下劃線開頭,所以變數名儘量不要以下劃線開頭。大小寫有區別,一般變數用小寫,符號常量用大寫。選擇的變數名儘量從字面上表達變數用途,區域性變數一般用較短的變數名。
3、char 字元型,佔用了一個位元組,可以存放本地 字符集 中的一個字元。int 整型,通常反映了所用機器中整數的最自然長度 float 單精度浮點型 double 雙精度浮點型
4、型別限定符signed與unsigned可用於限定char型別或任何整型。unsigned型別的數總是正值或0,並遵守算數模2^n定律(佔得位元組次方表示長度)unsigned char型別變數取值範圍0-255,而signed char 取值範圍為-128~127
5、類似1234的整數常量屬於int型別,long型別的常量以字母1或L結尾,如123456789L。當整數太大無法使用int型別表示時,將被當做long型別處理,無符號常量以字母u或者U結尾。字尾,字尾ul表示是unsigned long型別。
6、浮點數常量中包含一個小數點(如123.4)或一個指數(1e-2),也可以兩者都有。沒有字尾的浮點數常量為double型別。字尾
7、常量表示式是僅僅只包含常量的表示式。表示式在編譯時求值,不在執行時求值,所以可以出現在任何位置。他就是一個常量,不過寫的讓你能看懂。
8、字串常量就是字元陣列。字串內部表示使用一個空字元‘\0’作為串的結尾,所以儲存字串的物理儲存單元數比雙引號中的字元多一個。C語言對字串的長度沒有限制,但是程式必須掃描完整個字串才能確定字串的長度。標準庫函式strlen(s)可以返回字串引數s的長度,但長度不包括末尾的‘\0’。
9、‘x’和“x”是不同的,前者是一個整數,其值是字母x在機器字符集中對應的數值;後者是一個包含一個字母x以及‘\0’的字符集。
10、列舉常量,是一個常量整型值的表,例如
enum boolean(NO,YES);在沒有顯式說明的情況下,enum型別中第一個列舉名的值為0,第二個為1.以此類推,如果指定了部分列舉名的值,那麼未指定的列舉名的值將依著最後一個指定值向後遞增。
11、不同列舉中的名字必須互不相同。統一列舉中不同的名字可以具有相同的值。
12、列舉為建立常量值與名字之間的關聯提供了一種便利的方式,相對於#define語句來說,它的優勢在於常量值可以自動生成。
13、變數的初始化必須為常量表示式,每次進入函式或程式塊時,顯式初始化的自動變數都將被初始化一次,初始化表示式可以是任何表示式。預設為0
14、任何變數宣告都可以被const限定符限定。const限定的陣列所有元素都不能被修改。
15、算數運演算法加減乘除取模,整數除法會截斷結果中小數部分表示式。
16、取模運算子%不能應用於float和double型別,有副運算元的情況下,整數除法擷取的方向以及取模運算結果的符號取決於機器具體實現。
17、== != 優先順序小於 大於等於小於等於大於小於優先順序小於加減優先順序小於乘除取模
18、&&||懶惰運算子,從左到右處理,知道結果後立刻停止運算。&&的優先順序比||高,但是都比關係運算子和相等性運算子優先順序低。
19、!用於將非零運算元轉為0,將0運算元轉為1.
20、 型別轉換,思路就是把比較窄的自動轉換為比較寬的運算元,並且不丟失資訊的轉換f+i把整型加到浮點型上,將整型變數i的值自動轉換為浮點型。
21、任何表示式中都可以使用強制型別轉換(型別名)表示式,先把一個變數強制轉換為需要的變數再去呼叫函式,比如sqrt((double)n)
22、按位操作符,這些運算只能作用於整型運算元,只能作用於帶符號或無符號的char、short、int、long型別,按位與& 按位或| 按位異或^ 左移<< 右移>> 按位求反~
23、&的性質讓它可以對二進位制數進行置0操作,用0和這個數&,|可以用來置1操作,他們是位運算子
24、移位操作符會出現補0的情況按位異或操作符……兩個運算元不相同置1相同置0.
25、運算子優先順序與求值次序表記得。圓括號是優先順序最高的,多用圓括號。

相關文章