unsigned int value = 1860;
int data = 1300;
if( (data - value) > 0)
{
printf("Why it is printing this");
}
输出: 为什么会打印这个
我不明白,即使变量"data"的值小于变量"value",有符号数减无符号数为什么能通过"if"条件。我真的很好奇有符号数和无符号数相减是如何出现“小错误”但最终导致“大问题”的。因为我使用了"Delay"函数而不是"printf"函数,我的任务被延迟,造成了混乱。
unsigned int value = 1860;
int data = 1300;
if( (data - value) > 0)
{
Delay(data - value);
}
这一部分一直在延迟,我的任务永远没有结束。这意味着“数据-值”的价值是负数,所以它会无限等待。同时,它通过了“if”条件,即“数据-值”> 0。我有疑问,如果签名被转换为无符号并通过“if”,那么为什么它给“延迟”函数一个负值。