2023年5月21日(型別轉換)

2021-05-22 14:36:22 字數 1200 閱讀 2705

1、隱式轉換:從型別a到型別b的轉換可以在所有情況下進行,執行轉換的規則非常簡單,可以讓編譯器進行。隱式轉換不需要做任何工作,也不需要編寫**。

任何型別a只要其取值範圍完全包含在型別b的取值範圍內,就可以隱式轉換為型別b。其原因很簡單,如果把乙個值放在變數中,二該值超出了變數的取值範圍,就會出問題。例如,short型別的變數可以儲存0——32677的數字,而byte可以儲存的最大值是255,所以如果要把乙個short值轉換為byte值,就會出問題。如果short包含的值在256——32767之間,該值就不能放在byte中。但是,如果short型別變數中的值小於255,就應能轉換這個值,對嗎?答案是可以。具體地說也是可以,但是必須使用顯式轉換。執行顯式轉換有點類似於「我已經知道你對我這麼做提出了警告,但我對其後果負責」。

2、顯式轉換:從型別a到型別b的轉換只能在某些情況下進行,轉換的規則比較複雜,應進行某種型別的處理。需要編寫額外**,**的格式隨著轉換方法的不同而不同。

(1)強制轉換進行顯示轉換,強制轉換就是強迫資料從一種型別轉換為另一種型別,這只在某些情況下是可行的,彼此之間沒什麼關係的型別不能進行資料型別強制轉換。顯然,當需要顯式地把一種資料型別轉換為另一種資料型別時,最好知道是否有資料丟失了。有兩種方式可以檢查資料是否丟失,一種方式是簡單地檢查原變數的值,另一種方式是迫使系統特別注意執行期間的轉換。把乙個值放在乙個變數中,如果該值過大,不能放在型別變數中,就會導致溢位,這就需要檢查。這需用到兩個關鍵字checked和unchecked,稱為表示式的溢位檢查環境。例如:

byte destinationvar;

short sourcevar=281;

destinationvar=checked((byte)sourcevar);

console.writeline(……);

在執行這段**時,程式會崩潰,但是,在這段**中,如果用unchecked替代checked,不會報錯,但結果會錯。

除使用關鍵字進行檢查外,還可以配置開發環境進行檢查。(vs環境右擊專案—屬性—生成—高階—檢查運算上溢下溢)

(2)convert命令進行顯示轉換(這種轉換要注意的問題是,它們總是要進行溢位檢查,checked和unchecked關鍵字以及專案屬性設定沒什麼作用。在表示式中進行轉換,必須考慮兩種情況,因為每個非一元運算子的處理都可能要進行賦值運算子。例如:

shortval*floatval

其中把short值與乙個float值相乘,要考慮轉換的問題,相乘的結果也要考慮轉換問題。

2023年10月21日 總結

額,今天一整天都好睏的說.於是只有6道.還有不少水題 徹底的純粹的水題.好的上題!152 奶牛式乘法 142 拜年 370 區域網 137 找試場 144 伯虎點秋香 224 手機 為方便查閱,前面的序號是題號 奶牛式乘法 純水之一,簡單的字串處理 拜年 水題又一道,其實就是求最小生成樹,prim輕...

專案經理手記 2023年5月21日

昨天是5.20,今天是5.21.昨天是我愛你,今天是我愛一 生一世 呵呵,又不知道有多少少女要獻身了。答應乙個朋友要寫點東西,關於工作的。反正這孩子剛從西安到北京,估計這會正暈頭轉向呢,我先寫吧。所謂海量資料,就是指一大堆資料,嗯,和海那樣吧,一大堆一大堆一大堆一大大大大堆堆堆堆堆。我因為工作原因,...

2023年5月24日 2023年5月24日

2010年5月24日那天晚上,我下班回家,吃完飯,雖然我不記得是自己做的飯還是買回來吃的.我捧起了 第五版 開始了我的程式生涯.在那之前是我研究了6個月還是8個月開了我的傳奇私服,十分對戰 接著是2個月的運營後花光了所有積蓄,聽起來挺嚇人,其實就5000塊而已.在這之前,是我剛開始參加工作,就感覺自...