int main(void){
unsigned int a=10;
unsigned int b=11;
if((a-b)>=0){
printf("%d \n",(a-b));
}
}
输出为: -1
也就是说 无符号数相减的值为 -1 ,但是依然被视为无符号数.
无符号数是大于等于0的,所以 -1>=0 就是true.
本文通过一个简单的C语言程序示例,展示了无符号整数相减可能导致的意料之外的结果。程序中,两个无符号整数进行相减操作,尽管结果为-1,但因为无符号整数的特性,这一结果仍然被视为有效。文章揭示了无符号数运算的特殊性和潜在陷阱。
int main(void){
unsigned int a=10;
unsigned int b=11;
if((a-b)>=0){
printf("%d \n",(a-b));
}
}
输出为: -1
也就是说 无符号数相减的值为 -1 ,但是依然被视为无符号数.
无符号数是大于等于0的,所以 -1>=0 就是true.
1万+