std :: string length()函数如何工作?

Leo*_*dar 0 c++ string loops

我不明白为什么这个循环打印"INFINITE".如果字符串长度为1,怎么会length()-2产生一个大整数?

for(int i=0;i<s.length()-2;i++)
{
    cout<<"INFINITE"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

Luk*_*keG 5

std::string.length()返回一个size_t.这是无符号整数类型.您正在经历整数溢出.在伪代码中:

0 - 1 = int.maxvalue
Run Code Online (Sandbox Code Playgroud)

在你的情况下具体是:

(size_t)1 - 2 = SIZE_MAX 
Run Code Online (Sandbox Code Playgroud)

其中SIZE_MAX通常等于2 ^ 32 - 1