關於Linux下C編譯錯誤(警告)cast from 'void*' to 'int' loses precision

放上博主出錯的代碼:

char *ptr;  //此後省略部分代碼  
if( (int)ptr==-1 )  //出錯地方

那句話的意思是從 void* 到 int 的轉換丟失精度,相信看到解釋有些人就明白了,

此問題只會出現在X64位的Linux上,因爲在64位的機器上指針佔用8個字節,int 佔用四個字節,所以纔會出現這樣的問題,

解決方法:

(long)ptr == -1 就好了

發佈了13 篇原創文章 · 獲贊 23 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章