先说结论:无符号型相减 等同于 补码相加,结果仍然为无符号型
实验分析如下:
unsigned long case1()
{
unsigned int a = 1;
unsigned int b = 16;
long count = (long)a-(long)b;
return count> 0 ? count : 0; // ### break point 1
}
unsigned long case2()
{
unsigned int a = 1;
unsigned int b = 16;
long count = a-b;
return count> 0 ? count : 0; //### break point 2
}
gdb 获取count的内存状态
break 1:count --- 0xfffffffffffffff1
break 2: count -- 0xfffffff1