型別轉換越界計算機如何處理

2022-07-11 04:51:09 字數 836 閱讀 4009

物件的型別定義了物件能包含的資料和能參與的運算,其中一種運算被大多數型別支援,就是將物件從一種給定的型別轉換(convert)為另一種相關型別。

當在程式的某處我們使用了一種型別而其實物件應該取另一種型別時,程式會自動進行型別轉換。此處,有必要說明當給某種型別的物件強行賦了另一種型別的值時,到底會發生什麼。

當我們像下面這樣把一種算術型別的值賦給另外一種型別時:

型別所能表示的值的範圍決定了轉換的過程:

· 當我們把乙個非布林型別的算術值賦給布林型別時,初始值為0則結果為false,否則結果為true。

· 當我們把乙個布林值賦給非布林型別時,初始值為false則結果為0,初始值為true則結果為1。

· 當我們把乙個浮點數賦給整數型別時,進行了近似處理。結果值將僅保留浮點數中小數點之前的部分。

· 當我們把乙個整數值賦給浮點型別時,小數部分記為0。如果該整數所佔的空間超過了浮點型別的容量,精度可能有損失。

· 當我們賦給無符號型別乙個超出它表示範圍的值時,結果是初始值對無符號型別表示數值總數取模後的餘數。例如,8位元大小的unsigned char可以表示0至255區間內的值,如果我們賦了乙個區間以外的值,則實際的結果是該值對256取模後所得的餘數。因此,把-1賦給8位元大小的unsigned char所得的結果是255。

· 當我們賦給帶符號型別乙個超出它表示範圍的值時,結果是未定義的(undefined)。此時,程式可能繼續工作、可能崩潰,也可能生成垃圾資料。

計算機是如何處理中文的(八)

在作業系統之外的軟體,都在此處稱為應用軟體。本文以資料庫為例,說明應用軟體是如何支援中文的。馮諾依曼體系,構造了 外存 記憶體 cpu 的體系結構。所以,資訊處理的乙個環節,就是儲存。資料庫要儲存資料,普通文字編輯器也要儲存資料,這樣,資訊基本上都要 持久化 儲存起來。從外存到記憶體,檔案被開啟,資...

如何處理更改計算機名稱導致oracle無法啟動

1.安裝oracle後,更改windows計算機名,導致部分oracle第三方工具,如 plsql developer無法登陸,並提示ora 12541 tns no listener或ora 12547 tns 丟失聯絡等錯誤資訊的解決方法。答 從oracle的錯誤提示來看,是說tns no li...

編譯器如何處理型別轉換

在兩種型別之間做轉換,轉換結果將取決於兩種型別的精度 1.精度是n的有符號整數型別應該用n個bit表示,取值範圍至少應該覆蓋 2n 1,2n 1 例如signed char型用8個bit表示,表示的取值範圍是 128,127 也可以說是覆蓋了 128,128 所以這種型別的精度是8。2.精度是n的無...