前言
秀山土家族苗族ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!本節(jié)提要
一、幾種類型的對比
二、有關這幾種類型的補充
1.unsigned
2.char
3.short,int,long,long double
三、有關變量創(chuàng)建及賦值的一些問題
1.變量創(chuàng)建的格式
2.變量名
3.變量類型
4.常變量
1.const
2.define
5.不同類型的互相賦值問題
三、推薦練習
四、下節(jié)預告
本系列的意義在于兩點,一則是作為本人(一個編程初學者)的學習筆記記錄,二則希望能對后來者提供一些幫助,因為本人也為新手,難免有些錯誤或講述不清之處,懇請大家指出或提出建議,本人也會虛心修改。
本系列的目標是幫助一個編程初學者快速擁有簡單的編程能力,能夠自主完成洛谷入門級和部分普及級題目。
本節(jié)我將提供介紹幾種C語言中的數據類型并簡單介紹他們的創(chuàng)建與初始化,他們主要包括字符型,整形家族,浮點型(又稱實型)家族
類型及 其關鍵字 | 所占大小(單位:字節(jié)) | 取值范圍 | 輸入輸出格式符 | 創(chuàng)建樣例 | |
| 字符型 | char (字符型) | 1 | -2^7~2^7-1 | %c | char a='a'; |
| 整形家族 | int (整形) | 4 | -2^31~2^31-1 | %d | int a=100; |
short int (短整型) (int可省略) | 2 | -2^15~2^15-1 | %hd | short a=100; | |
long int (長整型) (int可省略) | 8 | -2^63?~ 2^63?-1 | %ld | long a=100; | |
long long int (超長整形) (int可省略) | 8 | -2^63?~ 2^63?-1 | %lld | long long a=100; | |
| 浮點型家族 | float (單精度浮點型) | 4 | -3.4E+38 ~ 3.4E+38 | %f | float a=1.0; |
double (雙精度浮點型) | 8 | -1.7E+308 ~1.7E+308? | %lf | double a=1.0; | |
long double (長精度浮點類型) | 16 | -1.2E+4932 ~1.2E+4932 | %llf | long double a=1.0; |
補充:計算機中存儲單位的大小及轉換
?bit(比特)
?1 byte(字節(jié))=8 bit
?1 kb(字節(jié))=1024?byte
?1 mb(兆字節(jié))=1024 kb
?1 gb(吉字節(jié))=1024 mb
?1 tb(吉字節(jié))=1024?gb
?1 pb(拍字節(jié))=1024?tb
二、有關這幾種類型的補充 1.unsigned簡單來說在以上的關鍵字(浮點型家族除外)前加上unsigned可使他們變?yōu)橄鄳臒o符號型,即他們不再能表達負值,其本質是將數字的二進制源碼(有關問題將在后面稱述)的符號位視為一般位,所以在賦值時我們需注意是否有將有符號型賦值與無符號型(或相反)的情況,以及他們的輸入輸出格式符(無符號型的,只需將有符號型的中的d換為u即可,如int 的為%d,對應的unsigned int 為%u)
#includeint main()
{
int n = -100;
unsigned long int res = n;
printf("%ld\n", res);
printf("%lu\n", res);
return 0;
} 經過了上面的闡述,請問上面的程序段打印的結果是否相同呢?
答案是

至于為什么第二個打印的結果為4294967196,這就涉及到二進制源碼的問題了,此處我們暫且按下不表,我們將會在之后的內容中學習到它
注:浮點數是不能用 unsigned來規(guī)范的。unsigned 的意思就是把內存中的數據第一位也用來表示數據,而不用于表示符號位。而浮點數規(guī)定內存中數據的第一位必須是符號位。因此兩者之間是互相矛盾的,這也就是為什么浮點數不會有unsigned類型。
2.char在上面的類型中,我們規(guī)定,如果不標明unsigned,那么默認它是一個有符號類型,但char型不一樣,char在標準中不指定為signed或unsigned,它具體是有符號型,還是無符號型,將由編譯器決定。
3.short,int,long,long double這里提到的幾種類型實際上我們并沒有具體規(guī)定他所占的空間與大小到底是多少
如:
這就意味著,short 并不一定真的”短“,long 也并不一定真的”長“,它們有可能和 int 占用相同的字節(jié)數。也就是說他們的大小及數據范圍將由操作系統(tǒng)和編譯器決定,而并非是一個具體值,如果我們想知道在當前機器和編譯器下,他們的大小和數據范圍,我們可以利用 sizeof 關鍵字去進行測算。
我們創(chuàng)建變量時使用如下格式 變量類型 變量名,并且為了保險起見,我們一般在定義時就會對變量進行初始化,如 float F=1.99; 這里我們定義了一個float類型的名字為F,值為1.99的變量。當然,如果有需要,我們也可不對變量進行初始化,如 float F;
2.變量名定義變量時,變量名可以隨我們心意地命名(只要不與C語言中的關鍵字重名),但必須是字母(字母區(qū)分大小寫)、數字和下劃線的組合。同時變量名的開頭不能是數字,可以由字母或下劃線開頭。但是為了更規(guī)范,更通用的命名,一般來說我們會盡量遵守以下的規(guī)則(但并非是強制要求)
C 是一種簡潔的語言, 命名也應該是簡潔的。例如變量名MaxVal 就比MaxValueUntilOverflow 好用。標識符的長度一般不要過長,較長的單詞可通過去掉“元音”形成縮寫。
變量分為全局變量(定義在{ }外部,對全局生效的變量)和局部變量(定義在{ }內部,對該{ }內生效的變量),當局部變量和全局變量名字沖突時,遵循局部優(yōu)先,但不建議寫成一樣的
注1:當全局變量不進行初始化時,我們規(guī)定它為0,而局部變量不進行初始化時,我們會賦予其一個隨機值
注2:同一工程下的全局變量可跨源文件使用,但使用時需用extern聲明
4.常變量 1.const使用const修飾的變量,將變?yōu)橐粋€常變量(但它仍是一個變量),使其在全局生效,并且不可被再次修改。常用于:1.定義一個常用常數為全局變量,便于之后程序的修改(可以一次修改所有使用了這個常數的地方,而無需一處一處的尋找和修改);2.對循環(huán)內部定義的局部變量,使其在每一次循環(huán)時,都能接著上次循環(huán)而改變(其實這個也不常用(笑))
如:const int a=1e5+10;
2.define用define定義的常變量類似于定義某值為全局常變量(當然也可定義于大括號內,作為局部變量)
如:#define a=10;
5.不同類型的互相賦值問題我們當然可以把不同類型的變量互相賦值,也可以使用不同的輸出格式符打印,正如上面我把int 賦與unsigned long int 類型,并使用了不同的輸入輸出格式符打印一樣,但需要注意精度問題
#includeint main()
{
float a = -100.9;
int b = a;
unsigned c = -b;
printf("%d\n", b);
printf("%u\n", c);
return 0;
} 我們來猜測一下上面這個代碼段輸出的答案到底是多少呢?
答案是
你做對了嗎?如果對了,那證明你已經基本理解了這里的內容了,如果沒有,沒關系下面我們一起來看看吧
首先,我們定義了float型的變量a為-100.9,然后我們將其賦值與int類型的b,因為計算機為向下取整,所以b被賦值為-100
然后我們將b賦值與unsigned int 類型的c,所以它以該類型打印出來,就為-100的絕對值,即為100
洛谷:這一節(jié)中我們講述的內容偏向理論,本人沒有想到沒有什么特別適合新手嘗試的題目,故而我提供一個編程作業(yè)思路給大家,請大家編程創(chuàng)建多個不同類型的變量,然后將他們互相賦值并輸出,熟悉不同類型間的區(qū)別
下一節(jié)中,我將會向大家介紹C語言中的轉義字符是什么,并講解常用的幾種轉義字符。
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
新聞名稱:初識C語言(2)幾種數據類型及其創(chuàng)建與初始化-創(chuàng)新互聯
文章地址:http://www.yijiale78.com/article10/csoddo.html
成都網站建設公司_創(chuàng)新互聯,為您提供搜索引擎優(yōu)化、網站改版、ChatGPT、軟件開發(fā)、網站設計、App開發(fā)
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯