char、short 自動轉為 int 參與運算float 自動轉為 doublelong double > double > float > unsigned long > long > unsigned > int示例:int a = 3.2 + 3 / 4.0; → 3/4.0=0.75 (double) → 3.2+0.75=3.95 → 賦值給 int 截斷為 3。
printf 格式化double x = 3.4; (int)x; // 生成臨時 int 值 3,x 本身不變 // 內存:x 佔 8 字節,常量 3.4 佔 8 字節,臨時 int 佔 4 字節
int a[10], *p = a, m; m = *p++; // 等價 m = *(p++); 先取值 *p,再 p++ // 結合順序:後置 ++ 與 * 同優先級,右結合
b = a = 2; // 右結合:先 a=2 (結果 2),再 b=2 // 10 是 int 常量 (C99 前為 int,非 short),賦值時無轉換
expr1, expr2 值為 expr2 的值,順序點保證先求 expr1。
正常返回 0,異常返回非零 (POSIX 約定)。
\n 刷新fclose、fflush、程序正常退出觸發刷新abort/SIGKILL) 緩衝區數據丟失// 加減法 (可能溢出) a = a + b; b = a - b; a = a - b; // 異或法 (推薦,無溢出風險) a ^= b; b ^= a; a ^= b; // 原理:x^x=0, x^0=x
int *p; scanf("%d", p); // 錯誤:p 未初始化,野指針
// 正確:
int x; scanf("%d", &x);
// 或
int *p = malloc(sizeof(int)); scanf("%d", p);