C語言筆記-強制轉換的重要
在整數相除,沒做強制轉換都會回傳一個整數,這兩條都是正確的:
4/2==2
5/4==1
第二條是容易導致錯誤的地方,有時後趕code很容易忽略到這個錯誤,只要養成一個習慣就好,假設i是整數,則(i+0.0)就可以了,括號很重要!
int two=2;
3/(two+0.0)==1.5
3/(2+0.0)==1.5
3/2.0==1.5
2/2.==1.5
也可以用強制轉換的方式:
3/(double)two==1.5
3/(double)2==1,
不過用前面的方式比較有美感,在/後面加上0.0是一種好習慣
但是陣列索引要注意一下,陣列索引只能是整數:
4/(double)2==2.0 //這是正確的
list[4/(double)2] //編譯器會提出錯誤,解決方法如下:
list[(int)(4/(doube)2)] //這是正確的
也可以:
int index=4/(double)2;
list[index];
此文章內容參考"21 century c"一書,在此做筆記
如須刪除請告知 謝謝
4/2==2
5/4==1
第二條是容易導致錯誤的地方,有時後趕code很容易忽略到這個錯誤,只要養成一個習慣就好,假設i是整數,則(i+0.0)就可以了,括號很重要!
int two=2;
3/(two+0.0)==1.5
3/(2+0.0)==1.5
3/2.0==1.5
2/2.==1.5
也可以用強制轉換的方式:
3/(double)two==1.5
3/(double)2==1,
不過用前面的方式比較有美感,在/後面加上0.0是一種好習慣
但是陣列索引要注意一下,陣列索引只能是整數:
4/(double)2==2.0 //這是正確的
list[4/(double)2] //編譯器會提出錯誤,解決方法如下:
list[(int)(4/(doube)2)] //這是正確的
也可以:
int index=4/(double)2;
list[index];
此文章內容參考"21 century c"一書,在此做筆記
如須刪除請告知 謝謝
留言
張貼留言