首页 > 其他 > 详细

string.length() 的类型

时间:2020-07-09 20:05:43      阅读:62      评论:0      收藏:0      [点我收藏+]

初学c++,写下这样一段代码

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     string s = "qwertyui";
 8     // cout << typeid(s.length()).name() << endl;
 9 
10     for (int p = 0; p < 10; p++)
11     {
12         if (p - s.length() >= 0)
13         {
14             cout << p << " ";
15         }
16     }
17     cout << endl;
18     system("pause");
19     return 0;
20 }

本意是想输出8 9,但是最后结果却是0 1 2 3 4 5 6 7 8 9

但是,代码12行改成

if (p >= s.length())

结果又是对的

懵逼了很长时间,最后断点调试才发现,string.length() 返回的是unsigned int型。一个小的int类型减去大的unsigned int类型,会自动进行类型转换。。。。。。。

string.length() 的类型

原文:https://www.cnblogs.com/r1-12king/p/13275633.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!