C++ string.length()导致问题

C++ string.length()导致问题,c++,string,C++,String,我真的被这个简单的问题难住了。 这是我的密码: #include <iostream> #include <string> int main() { std::string str = "bb"; int counter; for (counter = str.length() - 1; counter >= str.length() - 2; counter--) { std::cout << "c

我真的被这个简单的问题难住了。 这是我的密码:

#include <iostream>
#include <string>

int main()
{
    std::string str = "bb";
    int counter;
    for (counter = str.length() - 1;  counter >= str.length() - 2;  counter--)
    {
        std::cout << "counter: " << counter << std::endl;
    }
}
#包括
#包括
int main()
{
std::string str=“bb”;
整数计数器;
对于(计数器=str.length()-1;计数器>=str.length()-2;计数器--)
{
std::cout
std::string.length()
是无符号的,因此
计数器>=str.length()-2
中的
计数器
被转换为无符号值,公式将不为真


< >尝试使用<代码>计数器+2 >=0和计数器+2 > = StRelthTh()/Case>。< < /P> >在C++中的全局命名空间中使用<代码>空余主代码()/<代码>是非法的。您应该使用<代码> int main(空隙)
取而代之。@MikeCAT:你说非法是什么意思?!它工作正常。@user3257464规范不允许这样做。你的编译器可能允许这样做,但它是不可移植的,你不应该这样做。@user3257464抢劫也可以,而且仍然是非法的。如果对你有效,并不意味着它在任何地方都可以工作。@user3257464 Tha不是这样的。正式的语言规范说这是非法的。用你的类比,这就像坐在新加坡的酒吧里,对嚼口香糖视而不见,然后假设你可以在警察局外面这样做,而不用在牢房里过夜。@RSahu这不能直接解决这个问题。c也很好ast
str.length()
到正确的有符号类型。请您进一步解释一下好吗?str.length()-2将等于零,不是吗?那么为什么公式会出错?没有一个无符号整数小于0。明白了!谢谢:-)