认证0级讲师
在 C 裡並不會報錯,只是會有警告:
>>> gcc -o a a.c a.c: 在函数‘main’中: a.c:8:7: 警告:从不兼容的指针类型赋值 [-Wincompatible-pointer-types] a = b; ^ a.c:5:19: 警告:变量‘a’被设定但未被使用 [-Wunused-but-set-variable] volatile int *a = NULL; ^ >>> cp a.c a.cpp >>> g++ -o a a.cpp a.cpp: 在函数‘int main()’中: a.cpp:8:9: 错误:不能在赋值时将‘long int*’转换为‘volatile int*’ a = b; ^
警告的原因很明確,int 和 long 不相容。 C++ 裡會報錯,因為 C++ 的型別系統比較嚴格。
請把問題打上正確的標籤,以免引來非對口專業的人,浪費雙方的時間。
和volatile無關。 int和long本身就是不同類型(可以長度不同)啊,你這樣傳參驢唇不對馬嘴當然報錯了。先確認下你程式碼邏輯有沒有問題,然後再謹慎使用型別轉換吧。
volatile
int
long
在 C 裡並不會報錯,只是會有警告:
警告的原因很明確,int 和 long 不相容。 C++ 裡會報錯,因為 C++ 的型別系統比較嚴格。
請把問題打上正確的標籤,以免引來非對口專業的人,浪費雙方的時間。
和
volatile
無關。int
和long
本身就是不同類型(可以長度不同)啊,你這樣傳參驢唇不對馬嘴當然報錯了。先確認下你程式碼邏輯有沒有問題,然後再謹慎使用型別轉換吧。