在C語言中使用int定義類似高級語言中的bool類型變量的原因

學習過高級語言的朋友都知道,高級語言中有一種類型叫bool類型,但是在C語言中並沒有bool類型,而C++裏面卻是有bool類型的,有關於bool類型的描述我這裏不闡述,網上資源很豐富,這裏主要記錄如下:

1、首先得知道C99標準裏面是定義了bool類型變量的,只需要在開始聲明定義stdbool.h頭文件即可在C語言中使用bool類型變量,而這裏要說明的是在做C51單片機開發時keil中沒有stdbool.h這個頭文件,所以還是沒法用,但是在gcc或者linux下的sdcc編譯工具鏈中這個方法是可行的。

2、很多初學者不知道爲什麼要使用bool類型的變量,這裏簡單做個解釋,bool類型好比一個標記(這也是爲什麼在C語言中好多人使用flag這個單詞來表示bool類型),類似於單片機上面的標誌位(PSW),一般用來記錄一件事做了還是沒做,成功還是失敗等等這種對立事件,一般與if條件判斷語句所綁定使用,然後確定要做哪件事。

3、現在來說本文討論的重點問題,要在C語言中實現bool類型很容易,做法特別多,其中用的最多的就是使用int來定義一個變量然後使其的值爲1或者0(1和0就是bool類型的值),那麼做單片機的時候使用一個位就可以達到1和0的記錄,在其它地方也可以使用char類型來做,爲什麼要用到int類型來定義,這樣不是很浪費內存嗎,答案是這樣確實浪費內存,一個bit只佔用一位,char類型佔用一個字節,也就是8位,而int在51單片機中佔用兩個字節(16位)其他地方甚至佔用4個字節(32位),但是大家還是用的是int,而不是bit或者char(這裏指的是大多數人),不是說不可以,完全可以,但是有一定的缺陷:

上一篇文章說過,整型(int)佔用的字節數與硬件(主要指CPU)有一定的關係,大量使用整型可以使得CPU的運行速度達到更快(這裏面的原因和硬件的工作有關,內容很多,一句話說不清楚,只需要記住這點就可以了),在很久以前由於內存比較小,比較貴,所以大家寫的代碼應該是越小越好,當時如果大量使用int類型會導致內存不夠用,不得已只能採用降低運行速度來保證內存的佔用(儘可能不用int),而現在對於大部分機子來說內存很大,不在乎這一點佔用,而相反的,現在人們追求的是CPU的運行速度,所以大量的使用int可以使得CPU運行速率達到最佳,這就是爲什麼大家爲了使用一個位而定義一個int來操作的原因。

當然這些都是我個人的理解,如果有什麼不對的地方,歡迎討論!

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