int 正负相乘
unsigned int s_value;
if(s_value >= 0xFFFF)
{
s_value = 65535 - s_value + 1 ;flag = -1;
}
测得的s_value为65535,进入if判断后,发现s_value的值不变。
一看才发现我设置的数据类型为unsigned int,改为long int就可以啦!
当int正负相乘的时候,也需要特别注意数据类型是否是unsigned~
uint和int相乘,如果int为负,则相乘的结果非常大 。
unsigned int leftVal = 1;
int rightVal = -1;
float result = leftVal * rightVal ;
the result is : 4.29497e + 009 . 并不是你想要的“-1”结果。
但是如果改为:
int leftVal = 1;
int rightVal = -1;
float result = leftVal * rightVal;
the result is : -1 . 得到你想要的-1的结果。
编程的时候要当心这种情况,特别是由于此,而引起的bug .