fortan: formula translator 公式翻譯程式語言fibonacci: 斐波那契
為什麼賦值操作符為什麼是n-->
的含義是n-- > 0
, 而不是n- ->0
?
a+++++b
的含義是?
=
而不是==
?
ascii碼
貪心原則?
10
是否能表示成010
?
單引號括起來的乙個字元表示乙個整數,雙引號括起來的乙個字元代表乙個指標
c語言的定義並不允許巢狀注釋,但c編譯器可以支援
a++
的結果不能作為左值(見補充知識點)
c語言允許初始化列表中出現多餘的逗號:能讓自動化的程式設計工具方便地處理很大的初始化列表(每行的格式一樣)
c語言允許初始化列表中多餘的逗號,例如int days = ;
為什麼有這種特性?
函式宣告
運算子優先順序,結合性
switch語句中的case和break(c的特色)
函式呼叫要包括函式列表
「懸掛」else
if (x == 0)
if (y == 0) error();
else
寫出陣列和指標void memcpy(char *dest, const char *source, int k)
函式, 寫乙個函式void bufwrite(char *p, int n)
來一次轉移一批字元到緩衝區,必要時通過函式flushbuffer()重新整理快取。程式按一定順序生成一些整數,並將這些整數按列出輸出,程式的輸出可能包括若干頁的整數,每頁包括ncols列,每列又包括nrows個元素,每個元素就是乙個待輸出的整數,寫出輸出程式(printnum(), printnl(), printpage()分別是列印對應的內容)
作為引數的陣列宣告
避免」提喻法」synecdoche
空指標不能解除引用
不對稱邊界
求值順序
整數溢位
外部物件
static 修飾符能夠減少命名衝突
形參、實參與返回值
檢查外部型別
endian的意思是「資料在記憶體中的位元組排列順序」, 表示乙個字在記憶體中或傳送過程中的位元組順序。(little endian 將低序位元組儲存在起始位址, big endian 則相反)
當乙個程式異常終止時,程式輸出的最後幾行常常會丟失,原因?如何解決這個問題?緩衝輸出與記憶體分配
使用errno檢測錯誤
signal
getchar(putchar)經常被實現為巨集
「表示式」顯示常量 manifest constant(x) ((x)-1)
能否成為乙個合法的c表示式?使用巨集實現max的乙個版本,其中max的引數都是整數,要求在巨集max的定義中這些整型引數只被求值一次
巨集定義do while(0)
實現atol對應c語言的標準
識別符號名稱的限制
字元是有符號整數還是無符號
移位運算
大小寫轉化
並非所有的c實現在某塊記憶體被釋放後還能較長時間的保留之
"0123456789"[n % 10]
printf
varargs, stdarg
#include
#include
void error(char *format, ...)
#include
intprintf(char *format, ...)
區別
左值&右值
簡單的實現(c++)
// 字首形式
int& int::operator++() //返回值是乙個引用,就是說函式返回值也可以作為乙個左值使用
//字尾形式:
const
intint::operator++(int) //返回值是乙個非左值型的,與字首形式的差別所在
C陷阱與缺陷 筆記
這本書很薄,看目錄感覺講的也很基礎,估計能較快看完。算是開始閱讀前陣子買的那波書的熱身吧。學過編譯原理,我們應當了解,編譯器的工作基本過程。在詞法分析中,不同編譯器的不同設定,會帶來不同的問題。雖然很是細微,但是如果出錯,可能編譯器不提示,讓人抓狂.int a 0195 int b 0215 int...
C陷阱與缺陷筆記
第一章 詞法陷阱 1.1 不同於 1.2 與 不同於 與 1.3 詞法分析中的 貪心法 1.4 整型變數 1.5 字元與字串 第二章 語法陷阱 2.1 理解函式宣告 2.2 運算子的優先順序問題 2.3 注意作為語句結束標誌的分號 2.4 switch語句 2.5 函式呼叫 2.6 懸掛 else引...
《C陷阱與C缺陷》筆記
if x 0 else if x 0 char r,malloc r malloc strlen s strlen t 1 if r strcpy r,s strcat r,t free r include void main setbuf stdout buf 所有寫入stdout的輸出都使用bu...