2014-01-13 56 views

回答

2

由於鐺3.3,至少,你在這兩種情況下的警告,甚至沒有嘗試的:

/* main.c */ 
short x = 2000000000; 
int y = 1000000000 * 1000000000; 

int main() 
{ 
    return 0; 
} 

編譯:

$ clang -c main.c 
main.c:1:11: warning: implicit conversion from 'int' to 'short' changes value 
     from 2000000000 to -27648 [-Wconstant-conversion] 
short x = 2000000000; 
     ~ ^~~~~~~~~~ 
main.c:2:20: warning: overflow in expression; result is -1486618624 with type 
     'int' [-Winteger-overflow] 
int y = 1000000000 * 1000000000; 
       ^
2 warnings generated. 
+0

謝謝,這是一個很好的答案。您能否添加您使用的警告標誌?你也可以添加什麼時候發生什麼,當你做一個明確的演員,如短x =(短)2000000000; ?我將編輯我的問題以包含該案例。謝謝! – MciprianM

+0

'$ clang -c main.c'是編譯命令。沒有警告標誌。 '(短)2000000000'將不會引發隱式轉換警告,因爲轉換是明確的:投射意味着「只要做」。 –