1. 程式人生 > >陣列的初始化&縮窄轉換

陣列的初始化&縮窄轉換

1.初始化:

初始化就是在宣告變數的同時給變數賦值,而不是聲明後再賦值。

先宣告,後賦值:

int a;   //先宣告,由於沒有初始化,所以當前a的值是變數a建立前,相應的記憶體單元中保留的值,是未知的
a = 1;   //後賦值,此時a得到賦值,有了明確的值

宣告的同時賦值(初始化):

int a = 1;  //為變數a開闢記憶體空間的同時把該記憶體空間的值改寫成1,此時a的值是明確的

 

2.縮窄轉換:

   ①將較大的浮點型別轉化為較小的浮點型別:如將double轉換成float,此舉將會導致精度(precision)降低,值可能超出目標型別的取值範圍,在這種情況下,結果將是不確定的。

   ②將浮點型別轉換為整形:此舉將會導致小數部分丟失,原來的值可能會超出目標型別的取值範圍,再這種情況下,結果將是不確定的。

   ③將較大的整形轉化為較小的整形:如將long轉換位short,原來的值可能超出目標型別的取值範圍,通常只複製右邊的位元組。

 

3.陣列的初始化

①可以使用大括號初始化:

    如:int arry_1[10]={1,2,3,4,5,6,7,8,9,10};

②大括號裡可以不包含任何東西:

   如:int arry_2[10]={};      //所有元素都將被初始化為0.

③陣列長度可以預設:

   如:int arry_3[]={1,2,3,4,5};       //此時陣列長度等於初始化值表中元素的個數,5

④列表初始化禁止縮窄轉換:

   如:long arry_4[]={3,5,3.4};          //錯誤,不能把double型轉換為long型

         char arry_5[]={'a','b',23333333};      //錯誤,23333333超過了char變數的取值範圍

         char arry-6[]={'a','c',20};           //正確,20在char的取值範圍內