對於
c/c++
這種強型別的語言來說,
float
和double
是其最基本的資料型別,但是對於初學者來說或者已經都
c/c++
都了解比較到位的程式設計師來說還是容易遺忘;簡單來講
float
和double
如下:
浮點型別
型別 有效位
位元組數
float
6 – 7
double
15 – 16
浮點變數由尾數(包含數字的值)和指數(包含數字的數量級)表示。
下表顯示了分配給每個浮點型別的尾數和指數的位數。 任何
float
或 double
的最高有效位始終是符號位。 如果符號位為
1,則將數字視為負數;否則,將數字視為正數。
指數和尾數的長度
型別 指數長度
尾數長度
float
8 位
23 位
double
11 位
52 位
由於指數是以無符號形式儲存的,因此指數的偏差為其可能值的一半。 對於 float 型別,偏差為 127;對於 double 型別,偏差為 1023;
· float 為4個位元組,表示為:乙個符號位,8個指數字, 23個尾數,所以有效位數由尾數來 決定,即2^23=8388608共有7位, 指數的範圍是2^(-127~127) ·
double為8個位元組:表示為:乙個符號位,11個指數字,52個尾數來表示,所以有效位數為
2^52=4503599627370496 為15位,指數的範圍為2^12-1=4095(-2047~2047)
如下**:
/*輸出結果顯示float和double的有效位數。float最多表示7位有效資料。double最多表示16位有效資料。執行結果:float is 3.33333325386047363281,double is 3.33333333333333348136 float 有7個3,double有16個3. */ #include int main()
當你使用不用的ide編寫**時,總會發現在每行的最後會出現不同的箭頭,或者當你在vs下編寫的**在vim開啟時,會發現每行結尾會出現^m等特殊字元,這就是linux和windows下換行符(crlf)的區別了
就是回車(cr, ascii 13, \r)
換行(lf, ascii 10, \n)。
uinix系統下:換行是:
lf,即
---> \n
crlf
注入攻擊並沒有像其它型別的攻擊那樣著名。但是,當對有安全漏洞的應用程式實施
crlf
注入攻擊時,這種攻擊對於攻擊者同樣有效,並且對使用者造成極大的破壞。讓我們看看這些應用程式攻擊是如何實施的和你能夠採取什麼措施保護你的機構。
在計算機還沒有出現之前,有一種叫做電傳打字機(
teletype model 33
,linux/unix
下的tty
概念也來自於此)的玩意,每秒鐘可以打
10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去
0.2秒,正好可以打兩個字元。要是在這
0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。
於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元。乙個叫做「回車」
,告訴打字機把列印頭定位在左邊界;另乙個叫做「換行
」,告訴打字機把紙向下移一行。這就是「換行
」和「回車
」的來歷,從它們的英語名字上也可以看出一二。
後來,計算機發明了,這兩個概念也就被般到了計算機上。那時,儲存器很貴,一些科學家認為在每行結尾加兩個字元太浪費了,加乙個就可以。於是,就出現了分歧。
unix
系統裡,每行結尾只有「
<
換行》」,即"\n"
;windows
系統裡面,每行結尾是「
<
換行》<
回車 >
」,即「
\n\r
」;mac
系統裡,每行結尾是「
<
回車》」,即"\r"
;。乙個直接後果是,
unix/mac
系統下的檔案在
windows
裡開啟的話,所有文字會變成一行;而
windows
裡的檔案在
unix/mac
下開啟的話,在每行的結尾可能會多出乙個
^m符號。
在文字處理中
, cr, lf, cr/lf
是不同作業系統上使用的換行符.
dos和
windows
採用回車+換行
cr/lf
表示下一行,
而unix/linux
採用換行符
lf表示下一行,
蘋果機(mac os系統)
則採用回車符
cr表示下一行.
cr用符號
'\r'
表示,
十進位制ascii
**是13,
十六進製制**為
0x0d; lf
使用'\n'
符號表示
, ascii
**是10,
十六制為
0x0a. 所以
windows
平台上換行在文字檔案中是使用
0d 0a
兩個位元組表示, 而
unix
和蘋果平台上換行則是使用0a或
0d乙個位元組表示.
一般作業系統上的執行庫會自動決定文字檔案的換行格式
. 如乙個程式在
windows
上執行就生成
cr/lf
換行格式的文字檔案,而在
linux
上執行就生成
lf格式換行的文字檔案.
在乙個平台上使用另一種換行符的檔案檔案可能會帶來意想不到的問題
, 特別是在編輯程式**時
. 有時候**在編輯器中顯示正常
, 但在編輯時卻會因為換行符問題而出錯.
很多文字
/**編輯器帶有換行符轉換功能
, 使用這個功能可以將文字檔案中的換行符在不同格式單互換.
在不同平台間使用
ftp軟體傳送檔案時, 在
ascii
文字模式傳輸模式下
, 一些
ftp客戶端程式會自動對換行格式進行轉換
. 經過這種傳輸的檔案位元組數可能會發生變化
. 如果你不想
ftp修改原檔案
, 可以使用
bin模式
(二進位制模式
)傳輸文字.
windows系統下:換行是:
crlf
, 即---> \r\n;
windows下換行和linux下換行的區別
用以下文字為例 linux下 0000000 h t m l n n h t m l n 0000010 widows下 0000000 h t m l r n r n h t m l 0000010 0000011 由來 在計算機還沒有出現之前,有一種叫做電傳打字機 teletype model ...
回車和換行在linux下和windows下
今天,我總算搞清楚 回車 carriage return 和 換行 line feed 這兩個概念的來歷和區別了。1.在計算機還沒有出現之前,有一種叫做電傳打字機 teletype model 33 的玩意,每秒鐘可以打10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打...
Linux和Windows中換行的比較
參考自這裡!對於內容看起來一樣的兩個c檔案,乙個是linux下的檔案,乙個是windows下的檔案。在nodepad 中可以從狀態列中看出檔案的是linux下的還是windows下的。如下面兩個圖 他們看起來檔案的內容是一樣的,將它們轉成二進位制檔案後,則可以看出不同 在windows下 r n代表...