2016-09-28 77 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