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"一書,在此做筆記
如須刪除請告知 謝謝




留言

這個網誌中的熱門文章

FreeRTOS學習筆記 (二)-任務創建和刪除(xTaskCreate及vTaskDelete)

FreeRTOS學習筆記 (三)-時間管理vTaskDelay()及vTaskDelayUntil()

C語言筆記-文本處理(1) 善用 asprintf取代sprintf