對於c語言初學者來說,首先要接觸的東西便是資料型別。
c語言要求在定義所有的變數時都要指定變數的型別,當然不僅僅是變數,常量也是區分型別的。
那麼資料型別的意義是什麼呢?與我們用大腦思考的數學不同,數學是抽象的,比如數字123,是整數;1/23,則是無限不迴圈小數,具有無窮的位數。而對於計算機來說,資料都存放在儲存單元中,因為儲存單元是由有限位元組構成的有限空間,所以存放的資料位數也是有限的。因此為了方便我們對資料的整理,我們就要對存數單元進行安排,包括規定儲存單元的長度以及資料的儲存形式。
對於以下這段**
#include
int main()
很好的說明了三種常量在c語言中的表示形式,字元常量(character)是有引號括起來的字元,如『a』,『c』等,整數常量(integer)34,以及浮點數常量(floating poing)3.14。
而對於列舉型別,我們給出以下**:
#include
enum os_type
;int main()
輸出結果為0,1,2
當然列舉常量的個數取決於你給出個數的多少。它有什麼用處呢?我認為是方便助計。我們可以用0,1,2這些數字去替代列舉型別明,方便快捷。
如果這裡我們把linux=7,那麼輸出結果則是0,7,8,這種列舉的規則可見一斑。
我還想總結一下關於單精度浮點型(float)與雙精度浮點型(double)的知識點。
對於這段**:
#include
int main()
我們可以看出給出了兩個單精度浮點變數f,c。而在計算式(f - 32)*(5.0/9)*(3.0/2)的運算過程中,有三個多項式,這三個多項式我們都把數字用浮點型表示了,而所得的結果正是我們預期的結果。加入我們在輸出這個計算式的時候不小心輸錯了發生了如下幾種情況:(f - 32)*(5/9)*(3.0/2);(f - 32)*(5.0/9)*(3/2);(f - 32)*(5/9)*(3/2),那麼結果會有什麼變化呢?
在浮點型資料計算中,如果我們的表示式裡的數字不是浮點型,而是整形,那麼計算式的結果也按照整形來取。這裡(f-32)的結果是浮點型,(5/9)的結果為整形,因為(5/9)小於1,則這個計算式的結果取整形位為0;(3/2)大於1,則這個計算式的結果取整形位為1。那麼回到那三種情況,相當於:(f - 32)*0*(3.0/2);(f - 32)*(5.0/9)*1;(f - 32)*0*1,顯而易見與正確答案大相徑庭。那麼今後我們在輸入浮點型資料的時候就要小心這個問題。
對於雙精度浮點型double,它擴大了能表示的數值範圍,用8個位元組儲存乙個double型資料,可以得到15位有效數字。
還有許多其他的資料型別,我會在了解深入之後寫出新的心得。
我的C語言之路
include int main void 2016年8月我在 上入手了 c程式語言第二版 不是正版的,連同練習冊共30元,沒買正版這件事我一直愧疚不已 和在深圳書城買了一本正版的 c語言入門123 花了55塊錢 c程式語言第二版 這本書,不用說,被奉為入門經典,書不是很厚,卻很精煉,一如優秀的 一...
我的C語言之路1
已經是大三下學期了。我在自己專業上的道路才邁出第一步。今天才寫了幾個最簡單的順序程式,而且還問題百出。這就很尷尬了。說起來很可笑,我是乙個功利性特別強的人。就是說,一件要做的事情,如果看不到任何好處的話,我是沒有動力去做的。很遺憾的是,大學也開了不少專業課了,我也都應付過去了,比如 c語言程式設計,...
我的C語言之路3
對於這道題 輸出9 9乘法口訣表,我們應該如何解決呢?如果只是輸出簡單的表,我們給出以下 include int main printf n system pause return 0 問題迎刃而解,但是需要注意幾個問題 首先要清楚為什麼定義了變數j。因為我們發現每一行輸出的表示式個數與行數有關,第...