c++ int自动转换成无符号变量产生的问题
无符号对象不会小于零,尽管我们不会故意给无符号对象赋一个负值,但可能写出这样的代码。
1.当一个算数表达式中既有无符号数又有int值时,那个int值就会转换成无符号数。
#include<iostream>
using namespace std;
int main(){unsigned u = 10;int i = -42;cout<< u + i << endl;//输出4294967264
}
2.用无符号数写循环,要注意无符号数永远也不会小于0.
for(unsigned u = 10; u >= 0; --u)//死循环,因为u永远不可能小于0cout << u << endl;
3.string对象的size函数返回的是一个无符号整数。
假设n是一个具有负值的int,则表达式 s.size()<n 判断结果几乎肯定是true。
因为负值n会自动转换成比较大的无符号值。