佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 編程知識點(1)關鍵詞之存儲類型

編程知識點(1)關鍵詞之存儲類型

熱門標簽:智能手機 網(wǎng)站文章發(fā)布 呼叫中心市場需求 鐵路電話系統(tǒng) 美圖手機 檢查注冊表項 銀行業(yè)務 服務器配置

(應一些初學者的要求,雖然本人也絕對稱不上專業(yè),但是想讓一個人快速地走出初學的迷茫,需要這種精煉的集合)

首先,闡明一下我的觀點:

不論是什么編程語言,其實有很多的共通之處,基本上你學過一門編程語言,其他的語言也能很快學會.(本人學C++,但是會在必要的時候盡量避開語言特色只講想法).

在這么廣泛且有深度的領域中,有些功能的確沒辦法先讓人理解內(nèi)部構造再去使用,比如C++語言中的scanf,printf涉及到指針的傳遞事項和變參,cin,cout涉及到模板和重載運算符等等.但是我還是選擇先從存儲類型開始講,上述的復雜的東西以后也會講到(但是有C++語言特色要開Extra篇).

首先應當讓大家知道的是計算機如果采用十進制在資源上(目前)是極為浪費,且性能不優(yōu)的,而且二進制與十進制的轉換是極為方便的,有興趣可以自行百度"為什么計算機采用二進制",不浪費篇幅.

而正如人要寫字,就要有紙和筆,計算機要記錄信息,就要給計算機"紙"與"筆","紙"自然是有限的,而"筆"也是有規(guī)格的.內(nèi)存就是計算機的"紙",而對內(nèi)存讀寫的部件就是"筆".

(這么說來計算機的"筆"還可以讀,哈哈)

但是,人腦所適應的是十進制,二進制對于我們來講實在不易理解,而且計算機還要記錄非阿拉伯數(shù)字的信息,比如我這篇文章,于是就有了ASCII編碼,并有了對應的存儲類型char(character),對于小一點的數(shù)有short int,大一點的數(shù)有int,再大一點有l(wèi)ong long int,這些歸到整數(shù)(integer)里面,而往往有時候我們要記錄小數(shù),于是在integer里面拿幾位來記錄小數(shù)點的(十進制)位置,就有了float(floating number)和double(Double-precision floating-point)

(想一想,為什么不是直接使用二進制記錄小數(shù),即記錄二進制下的小數(shù)點位置?提示:將0.31試著轉化成二進制小數(shù),你會發(fā)現(xiàn)什么?)

然后把這些類型的屬性與可能的bug講一下,本篇就可以結束了

char:占1字節(jié),記錄[-128, 127](提示一下沒看懂的小伙伴,這是閉區(qū)間,即包含兩端點的區(qū)間)的整數(shù),ASCII碼表中一般期望背一下字符0的ASCII碼,字符A的ASCII碼,字符a的ASCII碼以及空格和換行的ASCII碼,下表中先了解[0, 127]碼值對應的字符

([128, 255]的部分我想你在學了unsigned以后會明白的,或者我提示一下,你把這個碼值轉八位二進制看看有什么發(fā)現(xiàn)).

ASCII碼表,來自網(wǎng)絡

short int:占2字節(jié),記錄[-32768, 32767]的整數(shù).

int:占4字節(jié),記錄[-2147483648, 2147483647]的整數(shù).

long long int:占8字節(jié),記錄[-9,223,372,036,854,775,808, 9,223,372,036,854,775,807]的整數(shù).

(想一想,為什么下限的絕對值比上限的絕對值多1?提示:從二進制符號位來思考"正負數(shù)"的個數(shù)是否相同)

(要講浮點數(shù),引入一下計算機上的科學記數(shù)法,比如6.02e23表示6.02乘以10的23次冪,指數(shù)為負數(shù)我不用說了吧)

float:占4字節(jié),記錄[3.4e-38, 3.4e38]的實數(shù),有效位數(shù)為6~7位.(因為有一部分位拿出來記錄小數(shù)點了,精確度比不上整數(shù)的),但是前期入門時用用足夠了

double:占8字節(jié),記錄[1.7e-308, 1.7e308]的實數(shù),有效數(shù)位為15~16位(據(jù)說double類型的處理在現(xiàn)代的優(yōu)化下比float快...)

那么問題就來了:我有一個int類型(32位),如果我將一個占用32位以上的數(shù)據(jù)賦值給這個int會怎么樣呢?答案是32位以上的內(nèi)容丟棄,32位及以下的內(nèi)容照搬,而符號位就有可能被賦到1的值,也就是有些時候數(shù)據(jù)溢出會出現(xiàn)負數(shù),有的時候會有正數(shù).如果上下限不夠,我們會采用高精度的方式來擴大上下限,所以大部分情況下出現(xiàn)數(shù)據(jù)溢出的情況是程序員的不認真導致的bug.

您可能感興趣的文章:
  • C++實現(xiàn)圖的鄰接表存儲和廣度優(yōu)先遍歷實例分析
  • C++實現(xiàn)圖的鄰接矩陣存儲和廣度、深度優(yōu)先遍歷實例分析
  • C++采用TLS線程局部存儲的用法實例
  • C++中靜態(tài)存儲區(qū)與棧以及堆的區(qū)別詳解

標簽:滄州 上海 河南 新疆 長治 沈陽 樂山 紅河

巨人網(wǎng)絡通訊聲明:本文標題《編程知識點(1)關鍵詞之存儲類型》,本文關鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    清原| 喀喇沁旗| 留坝县| 黎川县| 西峡县| 雷州市| 涿州市| 精河县| 旬阳县| 宣化县| 东方市| 南昌市| 北宁市| 濮阳市| 黄浦区| 西青区| 舒兰市| 乐山市| 海伦市| 南澳县| 读书| 安义县| 丰顺县| 海原县| 山西省| 连南| 津南区| 射洪县| 黄冈市| 遂平县| 马鞍山市| 朔州市| 新巴尔虎右旗| 东阿县| 临朐县| 旺苍县| 合肥市| 西宁市| 方山县| 通河县| 浦城县|