C++ string.find()返回值问题

来源:互联网 发布:淘宝云购 编辑:程序博客网 时间:2024/06/09 02:42

无意间发现这个问题:string.find()返回值,如果返回给一个int或long int类型,则返回值为-1;

若返回一个string::size_type类型值则返回2^32-1;

原因:string.find()返回值类型为string::size_type,其实是unsigned int类型。so,比较无符号整型2^32-1与整型-1的补码会发现他们是相同的:111111111111111111111111111,对应整型数2进制为:1000……001,即-1。

简言之,就是进行了一次由unsigned int 到int 的强制类型转换。

0 0
原创粉丝点击