在兼有值與賦值兩種功能的運算式中,賦值結合次序是由右至左。上面的語句等同於 n1 = (nw = (nc = 0));
int nl, nw, nc;nl = nw = nc = 0;
運算子||代表OR(或邏輯),運算子&&代表AND(邏輯與),&&比||高個優先順序。
統計數字0~9的個數
int c;while ((c = getchar()) != EOF) if (c >= '0' && c <= '9') ++ndigit[c' - 0'];
外部變數可以在全域範圍內訪問,因此函數間可以通過外部變數交換資料,而不必使用參數。
再者,外部變數在程式執行期間一直存在,而不是在函數調用時產生、在函數執行完畢時消失。 即使在對外部變數賦值的函數返回後,這些變數仍將保持原來的值不變。
類型限定符signed與unsigned可用於限定char類型或任何整型。不帶限定符的char類型對象是否帶符號則取決於具體機器,但可列印字元總是正值。
long類型的常量以字母L結尾,如123456789L、1234.3456L。 無符號常量以字母u或者U結尾。尾碼f或F表示float類型,沒有尾碼的浮點數常量為double類型。
如果一個整數太大以至於無法用int類型表示,也將被當作long類型處理。
標準標頭檔<string.h>中聲明了strlen和其它的字串函數。 在不顯示初始化時,自動變數、寄存器變數的值為未定義值(即無效值),外部變數和靜態變數自動初始化為0。
<ctype.h> 定義了一組與字元集無關的測試和轉換函式。例如:tolower(c) 函數將c轉換為小寫形式(如果c代寫形式的話。
對於數組而言,const限定符指定數組所有元素的值都不能被修改;
const限定符也可以配合數組參數使用,它表明函數不能取決於數組元素的值:
如果試圖修改const限定符的值,其結果取決於具體的實現
int strlen(const cahr[]) ;
為了保證程式的可移植性,如果要在char類型的變數中儲存非字元資料,最好指定 signed 或 unsigned 限定符。
關於資料類型的轉換:
char 與 short 類型的運算元轉換為 int 類型,float類型的運算元不會自動轉換為 double 類型
可以把一個較長的宏定義分成若干行,只需要在待續的行末尾加上一個反斜線符\ 。