一些C語言的dark corner

2021-07-24 18:52:13 字數 467 閱讀 9079

1、這兩個不是關鍵字,所以可以這樣:

int include;

void define(void);

2、陣列不能直接互相賦值,而結構體可以的原因下面這個解釋感覺合理:

dmr 在 1970s 初發明 c 語言是為了替換組合語言,以便他和 ken 寫作業系統。為了可見性(visibility),當初 c 語言裡每個 operation (包括 operator、function call) 都可以直接翻譯為簡單的彙編語句(指令),是 constant time。而陣列賦值需要迴圈,乙個 = 操作就不再是 constant time,這違背了初衷。不如乾脆讓你自己呼叫 memcpy 好了,畢竟 memcpy 一眼就能看出它不是 constant time。這也是 c 語言沒有乘方運算子的原因,因為沒有對應的彙編指令,實現乘方需要用迴圈。

不過後來 c 語言支援了 struct 的賦值,constant time 這一原則被打破了,這是後話。

C語言的一些基礎

一 c語言基礎 1.1 main函式是入口函式,用於進行link。1.2 sln是解決方案的管理檔案。1.3 int 32位 short 16位 long 32位 long long 64位。1.5 巨集的使用時很不安全的。1.6 常量名字的命名規則是 全大寫。1.7 明示常量存在於 1.8 反彙編...

C語言的一些基礎

一 c語言基礎 1.1 main函式是入口函式,用於進行link。1.2 sln是解決方案的管理檔案。1.3 int 32位 short 16位 long 32位 long long 64位。1.5 巨集的使用時很不安全的。1.6 常量名字的命名規則是 全大寫。1.7 明示常量存在於 1.8 反彙編...

C語言一些例項

晚上機考,臨時抱佛腳複習了一些 include include include include include 四個數排不同的三位數 intmain printf snumber d n return0 九九乘法口訣表 intmain printf n 求最大公因數與最小公倍數 intv int i...