缘由:今天看到两个判断数据是否溢出的函数,感觉写的非常好,在此记录一下,看来编程技巧还是有待提高
/******************************************************
* @brief 判断两个无符号字符类型变量之和是否溢出
* @parame x:参数1 y:参数2
* @retval 1:两数之和未溢出 0:两数之和溢出
* @note void
*******************************************************/
unsigned char Uadd_Ok(unsigned char x, unsigned char y)
{
unsigned sum = x+y;
return sum >= x;
}
/******************************************************
* @brief 判断两个字符类型变量之和是否溢出
* @parame x:参数1 y:参数2
* @retval 1:两数之和未溢出 0:两数之和溢出
* @note void
*******************************************************/
char Tadd_Ok(char x, char y)
{
char sum = x+y;
char neg_over = x < 0 && y < 0 && sum >= 0;
char pos_over = x > 0 && y > 0 && sum <= 0;
return !neg_over && !pos_over;
}