C語言是一門通用計(jì)算機(jī)編程語言,今天小編就給大家分享一篇關(guān)于C語言基礎(chǔ)教程吧,感興趣的朋友跟小編一起來了解一下吧!
1. 整型 int C 語言提供了很多整數(shù)類型(整型),這些整型的區(qū)別在于它們的取值范圍的大小,以及是否可以為負(fù)。int 是整型之一,一般被稱為整型。
正如我們?cè)谝郧暗慕坛汤锟吹降哪菢樱琲nt 用于聲明整型變量:以 int 打頭,后面跟著變量的名字,最后以分號(hào)(;)結(jié)束。例如: int erns; /* 聲明一個(gè)變量 */ 以上聲明創(chuàng)建了變量,但是沒有給它們提供“值(value)”。在前面的教程中,我們已經(jīng)用了兩種方法使變量獲得“值”。一種是賦值:cows = 500; 。另一種是使用 scanf 函數(shù):scanf( "%d", &goats ); 。下面我們來學(xué)習(xí)第三種方法。
初始化變量是指給變量賦初值:聲明變量的時(shí)候,在變量名的后面寫上等號(hào)(=),然后寫下你希望賦予變量的“值”。例如: int hogs = 21; 以上聲明創(chuàng)建了變量,并且為這些變量分配了空間,同時(shí)也賦了初值。注意,第三行中只有 cats 被初始化為 94,而 dogs 沒有被初始化!如下圖: ?
上面的例子中,21、32、14,以及 94 都是整數(shù)常量。C 語言中,整數(shù)常量的默認(rèn)類型是 int ,也就是說,整數(shù)常量占用內(nèi)存空間的大小一般等于 int 類型的變量占用空間的大小。如果整數(shù)常量的大小超過了 int 的取值范圍,那么編譯器將會(huì)把這個(gè)整數(shù)常量當(dāng)作 long int 類型來處理,這個(gè)我們后面還會(huì)講到。
int year = 2005; /* year 是 int 型變量 */ 保證格式限定符的數(shù)目和參數(shù)數(shù)目一致是我們的責(zé)任,編譯器不負(fù)責(zé)捕捉這種錯(cuò)誤!例如: #include stdio.h> int main(void) printf("%d minus %d is %d/n", ten ); /* 少寫了兩個(gè)參數(shù) */ getchar(); /* 等待用戶按回車 */ 這個(gè)程序可以通過編譯,但是運(yùn)行結(jié)果將會(huì)出乎意料,因?yàn)槲覀兩賹懥藘蓚€(gè)參數(shù)。第一個(gè) %d 被參數(shù) ten 的值代替,而另外兩個(gè) %d 將被內(nèi)存中本來儲(chǔ)存著的值代替。因?yàn)閮?nèi)存中本來儲(chǔ)存著的值是不確定的,所以輸出結(jié)果是不確定的。
C 語言中,整數(shù)常量默認(rèn)是十進(jìn)制(decimal)整數(shù)。通過在整數(shù)常量前面加上特定的前綴,可以把它設(shè)定為八進(jìn)制或者十六進(jìn)制整數(shù)。前綴 0x 或者 0X 把整數(shù)常量設(shè)定為十六進(jìn)制整數(shù)。注意,是數(shù)字 0 ,而不是字母 O ,別搞錯(cuò)了哦!例如:十進(jìn)制的 16 用十六進(jìn)制來表示是 0x10 或者 0X10 。在整數(shù)常量前面加上前綴 0 ,表示它是八進(jìn)制整數(shù)。注意,是數(shù)字 0 ,而不是字母 O 。例如:十進(jìn)制的 16 表示為八進(jìn)制就是 020 。
使用格式限定符 %o 可以以八進(jìn)制的形式輸出整數(shù)。注意,是小寫字母 o ,不是數(shù)字 0 。使用 %x 或者 %X 可以以十六進(jìn)制的形式輸出整數(shù)。小寫 x 表示輸出使用小寫字母,大寫 X 表示輸出使用大寫字母。使用 %#o,%#x 或者 %#X,得到的輸出將包括前綴 0,0x 或者 0X。例如: #include stdio.h> int main(void) printf("dec = %d; octal = %o; hex = %x; HEX = %X/n", x, x, x, x); getchar(); 這個(gè)程序的輸出是: dec = 200; octal = 310; hex = c8; HEX = C8 |
?
11. 基本數(shù)據(jù)類型:整型(中) |
? |
1. 其它整數(shù)類型 int 是 C 語言的基本整數(shù)類型,可以滿足我們處理一般數(shù)據(jù)的需求。C 語言還提供了四個(gè)可以修飾int的關(guān)鍵字:short、long、signed,以及unsigned。利用這四個(gè)關(guān)鍵字,C 語言標(biāo)準(zhǔn)定義了以下整數(shù)類型: 1) short int(可簡(jiǎn)寫為 short),和 int 一樣,也是有符號(hào)整數(shù) 一般我們把 short 稱為短整型,把 long 稱為長(zhǎng)整型,把 long long 稱為超長(zhǎng)整型,把 int 稱為整型。unsigned 打頭的那些整數(shù)類型統(tǒng)稱為無符號(hào)整型。例如:我們稱 unsigned short 為無符號(hào)短整型。以此類推。
這些整數(shù)類型的聲明方式與 int 類型的聲明方式一樣。例如: long int estine; 如果您的編譯器不支持C99標(biāo)準(zhǔn),那就不能使用long long和unsigned long long。
標(biāo)準(zhǔn)也規(guī)定了這些整數(shù)類型的最小取值范圍。short 的最小表示范圍和 int 一樣,都是 -32767 到 32767 。也就是 -(2^15 - 1)到(2^15 - 1)。其中,2^15表示 2 的 15 次方。類似地,2 的 20 次方記作 2^20 ,以此類推。注意:C 語言中 2^15 并不表示 2 的 15 次方,為了書寫方便,我們姑且這么表示。long 的最小取值范圍是 -2147483647 到 2147483647 。也就是 -(2^31 - 1) 到 printf( "%lu/n", (unsigned long)sizeof(int) * 8 ); /*輸出 int 的位數(shù) */ sizeof 的用法我們以后會(huì)講到,現(xiàn)在只要有個(gè)印象就好了。第二句中的 %zu 是 C99 特有的,如果您的編譯器不支持 C99(準(zhǔn)確地說,應(yīng)該是如果您的編譯器使用的庫函數(shù)不支持 C99),運(yùn)行結(jié)果將會(huì)出錯(cuò)。
如果您要處理的只是正整數(shù),那么應(yīng)該優(yōu)先使用 unsigned 打頭的那些整數(shù)類型。如果您要處理的整數(shù)超出了int所能表示的范圍,并且您的編譯器中,long的表示范圍比 int 大,那就使用 long 。不過,若非必要,盡量不要用 long ,因?yàn)樗赡軙?huì)降低程序運(yùn)行效率。有一點(diǎn)要注意:如果您的編譯器中,long和int都是32位的,并且您需要使用32位整數(shù),那么應(yīng)該用long,而不要用int。只有這樣,我們的程序才可以安全地移植到16位的計(jì)算機(jī),因?yàn)?16位的計(jì)算機(jī)中,int 一般也是16位的。類似地,如果您需要使用64位整數(shù),那就用 long long。如果 int 是 32 位的話,那么使用 short 可以節(jié)省空間,不過您得確保您要處理的整數(shù)不會(huì)超出 short 的表示范圍。這種“節(jié)省”對(duì)內(nèi)存大的計(jì)算機(jī)來說,是沒什么意義的。 5. long 型常量和 long long 型常量 一般來說,整數(shù)常量是被當(dāng)作 int 類型來存儲(chǔ)的。如果我們使用的整數(shù)常量超出了 int 的表示范圍,C 語言規(guī)定編譯器自動(dòng)使用 unsigned int 來處理這個(gè)常量。如果 unsigned也不足以表示這個(gè)常量的話,編譯器就會(huì)用long 。如果還表示不了的話,那就依次用unsigned long,long long,unsigned long long。如果unsigned long long也表示不了,那么編譯器就沒轍了。注意:long long 和unsigned long long 是 C99 特有的。例如:如果 int 是 16 位的話,它就表示不了常量 1000000。編譯器會(huì)使用 long 來處理這個(gè)常量,因?yàn)?unsigned int 也表示不了 1000000 。 以上就是C語言基礎(chǔ)教程,想必都了解了吧,更多相關(guān)內(nèi)容請(qǐng)繼續(xù)關(guān)注武林技術(shù)頻道。 |
?
新聞熱點(diǎn)
疑難解答
圖片精選