c#小灶——8.自動類型轉換和強制類型轉換

  • 2019 年 10 月 3 日
  • 筆記

前面已經認識了不同的數據類型,你們有沒有嘗試過讓不同的數據類型進行運算呢?

int a = 1;  double b = a;  Console.WriteLine(b);

運行結果是:1

我們把一個整型的變數賦值給了一個浮點型的變數,可以正常的輸出,如果我們把一個浮點型的變數賦值給一個整型的變數呢?

double a = 1;  int b = a;  Console.WriteLine(b);

這樣就會報錯。

為什麼呢?因為我們之前說過,變數就像一個容器,裡面存放著變數的值。而數據類型就相當於容器的類型,決定了容器能夠存放什麼樣的值。

試想,生活中我們把小盒子里的東西放進大盒子里,是沒有問題的。數據類型也是這樣。我們把整型的數據賦值給浮點型是可以放進去的,放進去之后里面的值1其實也就變成了浮點型,即1.0,不過c#輸出的時候,很聰明的把後面的.0去掉了。

結論:佔位元組小的可以向佔位元組大的自動轉換,但佔位元組大的不能向佔位元組小的自動轉換。

這種數據類型的轉換是自動完成的,所以叫做自動類型轉換。

 

如果我偏要把位元組大的賦值給位元組小的怎麼辦呢?試想,生活中我們把大盒子中的東西裝進小盒子,東西少還好,東西多了就只能裝進去一部分了。現在我說,我不聽我不聽,我就是要把大盒子的東西裝進小盒子。哭唧唧……

沒辦法,我們只能使用強制類型轉換,即把佔位元組大的數據類型強制轉換為佔位元組小的數據類型。

double a = 1.2;  int b = (int)a;  Console.WriteLine(b);

我們在引用變數a給b賦值時,在a前面加了個括弧,就是把數據類型強制轉換為括弧里的數據類型。我們運行一下,結果是:1

a的值是1.2,強制類型轉換賦值給了b之後就只剩1了,因為整型的沒有小數部分,所以裝不下了啊。

Tags: