今日调试一程序,碰到一处断言过不去,可以看了半天就看不出来哪过不去~断言如下:
N小时之后,无意发现是变量类型不对。
len是Unsigned型的,而-1是signed型的。
以我的推测,Gcc编译器会将Signed型变量转换成Unsigned,所以这里(len >= -1)就是false了。
- UINT len = 5;
- ASSERT(len >= -1)
len是Unsigned型的,而-1是signed型的。
以我的推测,Gcc编译器会将Signed型变量转换成Unsigned,所以这里(len >= -1)就是false了。
本文记录了一次因变量类型不匹配导致的断言失败问题。在调试过程中,作者发现了一个微妙的错误:unsigned类型的变量与signed类型的值进行比较,导致了意料之外的结果。通过这个例子,我们了解到类型匹配的重要性。
917

被折叠的 条评论
为什么被折叠?



