一、操作符
1.算數操作符中,除了%取模操作符只接受整型操作數之外,+ - * /既可適用浮點類型 又可使用於整型。
2.移位操作符中,算數左移和邏輯左移是相同的,而對於有符號數的右移操作,採用0填充還是符號位是因編譯器而異的,因此是不可移植的。移位的位數爲無符號整型
3.位操作符的操作數均爲整型
4.賦值表達式的值爲左操作符的值。getchar()和EOF,整型、字符型存在提升和截短的陷阱。複合型賦值操作符的效率更高
5.當sizeof的操作數是個數組名時,它返回該數組的長度,以字節爲單位。sizeof並不會對錶達式進行求值
6.自增、自減操作符的結果不是被他們所修改的變量,而是變量值的拷貝
7.關係操作符的結果都是一個整型值,
8.邏輯操作符控制求值順序,左操作數的值會影響右操作數是否會被求值
9.條件操作符代替簡單的if語句,控制求值順序
10.整個逗號表達式的值爲最後那個表達式的值
二、表達式求值
1.左值是一個地址,右值可是左值和常量
2.隱形類型的轉換:long double double float unsigned long int long int unsigned int int 如果某個操作數的類型在上面這個列表中排名較低,那麼就先將其轉換爲另一個操作數的類型,字符的運算缺省都是按照int 型運算的
3.複雜表達式的求值順序是由三個因素決定的:操作符的優先級、操作符的結合性和操作符是否具有控制執行的順序,相鄰的操作符哪個先執行取決於操作符的優先級,如果兩者的優先級同,那麼他們的執行順序由他們的結合性決定,結合性就是一串操作符是從左向右執行還是從右向左執行,&& || 條件操作符 逗號操作符可對整個表達式的求值順序施加控制,他們或者保證某個子表達式能夠在另一個子表達式的所有求值過程完成之前進行求值,或者可能使某個表達式被完全跳過不被求值
4.求值順序