2016-09-28 43 views
-2

寫的函數與unsigned char參數無符號類型如下所示警告消息:大整數隱式截斷爲[-Woverflow]

void Address_set(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2) 

上述函數被調用C代碼的main()功能

Address_set(0,0,239,319); 

我收到了警告

大整數隱式截斷爲unsigned type [-Woverflow]

如何避免此警告。

+3

由於不使用較大的值比類型可以處理。 –

+0

將int(無符號字符y2)更改爲int,或避免使用大於unsigned char最大值的數字 –

+0

您期望什麼,試圖將319轉換爲[unsigned char'](https://www.tutorialspoint .COM/cprogramming/c_data_types.htm)? –

回答

0

unsigned char範圍是[0 ... 255],值319被截斷(迴繞)到319 % 256 = 63

如何避免這種警告。

值仍然被截斷,即使你可以使用強制避免這樣的警告:

Address_set(0,0,239,(unsigned char)319); 

使用較長的類型,即:unsigned short

+0

或傳遞一個較小的值(例如255而不是319)。 –

+0

將其更改爲unsigned short後。它看起來很好。 void Address_set(無符號短x1,無符號短y1,無符號短x2,無符號短y2) – Sha