Expert C Lanuage 學習筆記----1、穿越時空的迷霧(1)

Expert C Lanuage 學習筆記----1、穿越時空的迷霧(1)

1、First Mistake

幾乎每個C語言編程新手都犯過下面錯誤:

if( i = 3 )

正確應該是

if( i == 3 )

這種錯誤寫法一般編譯器是不會報錯的,IAR會報use of “=” where “==” may have been intend警告,所以爲了避免忽視警告引發的問題,可以按下面寫法:

if( 1 == i )

如果少了一個等號,編譯器會報expression must be a modifiable lvalue錯誤。

2、C語言的早期體驗

1、C語言排斥強類型
類型系統的目的是保護程序員,防止他們在數據上進行無效的操作,類型系統的加入從未在可用性進行認真的評估和嚴格的測試。C語言排斥強類型,它允許程序員在需要的時候可以在不同類型的對象間賦值。時至今日,許多C程序員認爲“強類型”只不過是敲擊鍵盤的無用功。
2、C語言方便編譯器設計者的特性
編譯器設計者的金科玉律:效率(幾乎)就是一切,而C語言早期的主要客戶就是編譯器設計者,所以,C語言有很多根據編譯器計者的思路發展的語言特性。

(1) 從0開始而不是1開始:編譯器設計者選擇0開始,因爲偏移量的概念在他們心目中根深蒂固。
(2) C語言的基本數據類型直接與底層硬件相對應。
(3) auto關鍵字顯然是擺設:auto的意思是“進入程序塊時自動內存分配”.
(4) 表達式的數組名可以看作數組指針。
(5) float被自動拓展爲double(C期,現在ANSI情況不是如此)。
(6) 不允許嵌套函數(函數內部包含另一個函數的定義):這簡化了編譯器,並稍微提高了C程序的運行時組織結構。
(7) register關鍵字:程序中哪些變量經常使用,就放在寄存器裏。使用register,簡化編譯器,麻煩了程序員。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章