陣列的初始化&縮窄轉換
阿新 • • 發佈:2018-12-09
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的取值範圍內