字符串::长度返回错误值

string::length returns false value?

本文关键字:错误 返回 字符串      更新时间:2023-10-16
string str = "abcdef";
cout << str.length() << endl; //6
cout << str.length() - 7 << endl; //4294967295

我不明白为什么str.length()-7返回4294967295而不是-1。

您能帮我解释一下吗?

str.length()返回一个未签名的 size_t。这个未签名的结果包裹着,这就是为什么您获得4294967295而不是-1。

str.length()的返回类型是 size_t

size_t length()const noexcept;

您可以将其视为这种情况的unsigned int

无签名的整数底面在达到负值时会缠绕,绕过另一个极端,导致 you 在您的系统中看到4294967295。

4294967295(2^32-1)对应于32位未签名类型的最大值 - 与公平的32位实现相一致。此外,size_t可以是,但不是不是,是32位类型。