標籤:unsigned 字元 c程式 沒有 產生 符號整型 oid 實現 過程
基本類型
基本類型包括多種聲明為字元的對象要大到足以儲存執行字元集中的任何字元如果字元集中的某個字元儲存在一個char類型的對象中,則該對象的值等於字元的整型編碼值,並且是非負值其他類型的對象也可以儲存在char類型的變數中,但取值範圍 特別是是否呆符號,同具體的實現有關以unsigned char聲明的無符號字元與一般字元佔用同樣大小的空間,但其值總是非負的以signed char 顯式的聲明帶符號字元與一般字元也佔用同樣大小的空間除char外 還有3種不同大小的類型short intintlong int普通的int對象的長度和宿主機器的體繫結構決定的自然長度相同其他類型的整型可以滿足各種特殊的用途枚舉是一種具有整型值的特殊類型.與每個枚舉相關聯的是一個命名常量的集合枚舉類型類似於整型但是 如果某個特定枚舉類型的對象的賦值不是其常量中的一個,或者賦值的不是同一個類型的運算式,則編譯器通常產生警告資訊因為以上這些類型的對象都可以解釋為數字所以可以將它們統稱為算術類型char類型各種對象的int枚舉類型都統稱為整數型別floatdoublelong double統稱為浮點類型void型別宣告一個值的空集合,它常被用來說明不返回任何值的函數類型
衍生類別型
除了基本類型外,我們還可以通過以下方法構造出衍生類別型從概念上講衍生類別型可以有無限多個給定類型對象的數組返回給定類型對象的函數指向給定類型對象的指標包含一系列不同類型對象的結構可以包含多個不同類型對象中任意一個對象的聯合
類型限定符
對象的類型可以通過附加的限定符進行限定聲明const的對象表示此對象的值不可修改聲明volatile的對象表示它具有與最佳化相關的特殊屬性限定符既不影響對象的取值範圍,也不影響其算術屬性
A.5 對象和左值
對象是一個命名的儲存地區左值是引用某個對象的運算式具有合適類型與儲存類的標識符便是左值運算式的一個明顯的例子某些運算子可以產生左值
A.6 轉換
根據運算元的不同,某些運算子會引起運算元的值轉換另一種類型
整型提升
在一個運算式中,凡是可以使用整型的地方都可以使用帶符號和無符號的字元 短整型或整型為欄位,還可以使用枚舉類型的對象如果原始類型的所有值都可以用int表示,則其賦值將被轉換為int類型 否則將轉換為unsigned int
整型轉換
將任何整數轉換為某種指定的無符號類型數的方法是以該無符號類型能夠表示的最大值加1為模,找出與此整數同餘的最小非負值的對二的補碼錶示中,如果該無符號類型的位元模式較窄,這就相當於左截取如果該無符號類型的位元模式較寬,相當於對帶符號的值進行符號擴充和對無符號的值進行0填充將任何整數轉換為帶符號的類型時,如果它可以在新類型中表示出來,則其值保持不變否則它的值同具體實現有關
整數和浮點數
當把浮點數轉換為整型時,小數部分將被丟棄如果結構值不能用整數表示,則其行為是未定義的特別是,將負的浮點數轉換為無符號整型的結果是沒有定義的當把整型轉換為浮點類型時,如果該值在浮點類型可表示的範圍內但不能精確表示,則結果可能是下一個較高或較低的值如果該值超出可表示範圍,則其行為是未定義的
浮點類型
將一個低精度的浮點類型轉換為相同或高精度的浮點類型時,它的值保持不變將一個高精度的轉換為地精度時,如果它的值在可表示範圍內,則結果可能是下一個較高或較低的可表示值.如果結果在可表示範圍外,則其行為是 未定義的
算術類型轉換
許多運算都會以類似的方式在運算過程中引起類型轉換,併產生結果其效果是將所以運算元轉換為同一公用類型,並以此作為結果類型這種方式的轉換稱為普通算術類型轉換
指標和整數
指標可以加上或減去一個整型運算式.在這種情況下整型運算式的轉換按照加法運算子的方式進行兩個指向同一數組中同一類型的對象的指標可以進行減法運算,其結果將轉換為整型轉換的方式按照減法運算子的方式進行值為0的整型常量運算式或強制轉換為 void *類型的運算式可以通過強制轉換 賦值或比較操作轉換為任意類型的指標其結果將產生一個null 指標,此null 指標等於指向同一類型的另一null 指標,但不等於任何指向函數或對象的指標還允許進行指標相關的其他某些轉換,其結果依賴具體實現指標可以轉換為整型,但此整型必須足夠大整型可以顯式轉換為指標指向某一類型的指標可以轉換為指向另一類型的指標,但是 如果該指標指向的對象不滿足一定的儲存對齊要求,則結果指標可能會導致地址異常指向某對象的指標可以轉換為一個指向具有更小或相同儲存對齊限制的對象的指標,並可以保證原封不動的轉換回來對齊的概念依賴具體的實現,但char類型的對象具有最小的對齊限制一個指標可以轉換為同類型的另一個指標指向一個函數的指標可以轉換為指向另一個函數的指標
void
void對象值不能以任何方式使用,也不能被顯式地轉換問任一非空類型
指向void的指標
指向任何對象的指標都可以轉換為void *類型,且不會丟失資訊如果將結果再轉換為初始指標類型,則可以恢複初始指標執行指標到指標的轉換時,一般需要顯式的強制轉換這裡不同的是,指標可以被賦值為void *類型的指標,也可以賦值給void *類型的指標,並可與void *類型的指標比較
《C程式設計語言》筆記 (九) 參考手冊2