猶豫了一下我又回來了,回到公司辦公室,坐了下來。決定繼續看看型別轉換。
浪費時間毫無意義。
無符號型別與整形
儘管我們不會給無符號型別賦乙個負值,卻可能寫出這麼做的**。
看例子:
#include using namespace std;
int main()
在例子中,將乙個負值賦給了乙個無符號數。
當我們將乙個超出了無符號數範圍的數賦值給乙個無符號數變數的時候,結果是初始值對無符號數型別表示的數值總數取模的餘數。
例子中無符號數型別數值總數的個數是4 294 967 296個,則結果為-1對4 294 967 296取模。
在計算取模運算的過程總我出現了一些疑問,因為對於負數的取模運算的計算方法我不太了解,對於取模運算和取餘運算的區別我也不是很清楚。
所以,關於取模運算和取餘運算,我也特意的查詢了他們之間的區別和具體的計算方法。
首先是計算方法,a對b取模或取餘都需要兩步。
1.計算商c = a/b
2.計算餘數r = a - c*b
他們的計算過程是相同的,不同的地方在於當a為負數時,計算出的商c的取值不同(當a為正數的時候,c的取值是取較靠右的那個值,這個值既可以說是趨向於0又可以說是趨向於負無窮)。
如果是取模運算則c取接近負無窮的那個值,如果是取餘運算則c取接近0的那個值。
如本例中的-1對4 294 967 296做運算:
如果是取餘運算,則c=0,r = -1。
如果是取模運算,則c=-1,r = -1 - (-1)*4 294 967 296= 4 294 967 295。
程式執行結果:
今天的複習工作暫時到這裡了,雖然內容並不多,但是切實學到了以前沒學到的東西。畢竟以前學的不踏實,只是了解大概,對知識的框架有了概念,現在的對於c++知識的復
盤可以讓我不斷的對這個框架進行充實,不會再閱讀**的過程中出現那麼多有印象卻又不甚了解的問題。
C 筆記5型別轉換
以下 的開頭 include using namespace std c 型別轉換 原始型別轉換,所有情況都是一種寫法,可讀性不高,有可能有潛在的風險 void func int type case 2 default void func2 char c p void main void func ...
C 入門經典學習5 型別轉換
c 入門經典學習5 型別轉換 隱式轉換 任何型別a,只要其取值範圍完全包含在型別b的取值範圍內,就可以隱式轉換為型別b。顯示轉換 checked unchecked convert 列舉 enum 預設是int 可以指定,可以用 賦值,值可以重複。string轉換為列舉用enum.parse 結構 ...
python學習(5)型別轉換 和例項
變數.split 引號裡是符號,把字串通過什麼符號拆分,轉成列表 符號要是原來格式裡有的 join 變數 引號裡是符號,把列表通過什麼符號轉成字串型別連線起來 強制轉換 enumerate 獲取索引和值 前加dict強制轉換 變數.items 迴圈 前加list強制轉換 先排序,索引是0的最小,索引...