程式設計知識點 1 關鍵詞之儲存型別

2022-09-21 00:27:09 字數 1921 閱讀 6999

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

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

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

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

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

而正如人要寫字,就要有紙和筆,計算機要記錄資訊,就要給計算機"紙"與"筆","紙"自然是有限的,而"筆"也是有規格的.記憶體就是計算機的"紙",而對記憶體讀寫的部件就是"筆".

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

但是,人腦所適應的是十進位制,二進位制對於我們來講實在不易理解,而且計算機還要記錄非阿拉伯數字的資訊,比如我這篇文章,於是就有了ascii編碼,並有了對應的儲存型別char(character),對於小一點的數有short int,大一點的數有int,再大一點有long long int,這程式設計客棧些歸到整數(integer)裡面,而往往有時候我們要記錄小數,於是在integer裡面拿幾位來記錄小數點的(十進位制)位置,就有了float(floating number)和double(double-precision floating-point)

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

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

c程式設計客棧har:佔1位元組,記錄[-128, 127](提示一下沒看懂的小夥伴,這是閉區間,即包含兩端點www.cppcns.com的區間)的整數,ascii碼表中一般期望背一下字元0的ascii碼,字元a的ascii碼,字元a的ascii碼以及空格和換行的ascii碼,下表中先了解[0, 127]碼值對應的字元

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

ascii碼表,來自網路

short int:佔2位元組,記錄[-32768, 32767]的整數.

int:佔4位元組,記錄[-2147483648, 2147483647]的整數.

long long int:佔8位元組,記錄[-9,223,372,036,854,775,808, 9,223,372,036,854,775,807]的整數.

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

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

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

double:佔8位元組,記錄[1.7e-308, 1.7e308]的實數,有效數字為15~16位(據說double型別的處理在現代的優化下比float快...)

那麼問題就來了:我有乙個int型別(32位),如果我將乙個占用32位以上的資料賦值給這個int會怎麼樣呢?答案是32位以上的www.cppcns.com內容丟棄,32位及以下的內容照搬,而符號位就有可能被賦到1的值,也就是有些時候資料溢位會出現負數,有的時候會有正數.如果上下限不夠,我們nxorth會採用高精度的方式來擴大上下限,所以大部分情況下出現資料溢位的情況是程式設計師的不認真導致的bug.

本文標題: 程式設計知識點(1)關鍵詞之儲存型別

本文位址:

python的知識點關鍵詞 Python知識點速記

input str 中可以輸入列印字串 tuple是常量list 單個元素的tuple用 a,表示,注意逗號 hex整數轉十六進製制字串,oct整數轉八進位制字串,ord字元轉ascii碼,chr ascii碼轉字元 雙斜槓為地板除 忽略餘數 為乘方 a 1 list翻轉,第二個冒號後面為不長 di...

Linux高階程式設計知識點(1)

linux高階程式設計 1 unix linux系統江湖傳言 檔案之才,得之可得天下 這也是採用檔案系統管理硬體裝置的原因。之前的linux基礎篇主要是了解linux的基礎命令和工作原理 而高階篇涉及到socket程序通訊等重要的知識,話不多說,一起去挖寶吧!1.裝置和檔案 linux採用檔案系統管...

C 知識點之const關鍵字

用於定義常量變數,這樣這個變數在後面就不可以再被修改 const int ivalue 10 ivalue 20 編譯報錯,ivalue不可被修改如果輸入引數採用 指標傳遞 那麼加const 修飾可以防止意外地改動該指標。例如 void stringcopy char strdestination,...