linux中資料型別的表示與思考
在使用多執行緒的過程中,pthread_create(&tid,NULL,func,arg);
如果只是想傳一個數進去,那麼可以直接寫成pthread(&tid,NULL,func,(void *)arg);
然後在實際的func函式中將資料轉換回來。
void *func(void *arg){
int id = (int)arg;
//TODO:
}
這樣做,gcc會提出警告,如果說你可以確保arg的資料是在int範圍之內的,這樣使用完全沒問題,如果無法確保,即當資料>2^31-1 的時候,這樣使用就會出錯,程式設計的時候需要自己衡量。
而且 b = (200<<20)*300 這樣系統會報警告,而且執行時會顯示溢位。
因為他把右邊的變數當成32位的型別處理了,而該臨時變數儲存不下導致的。
應該寫成 b=(200<<20)*(300ull);
閱讀(49) | 評論(0) | 轉發(0) | 給主人留下些什麼吧!~~ 評論熱議