C++ 为什么for(int i=0;i<;THE_WORD.length();+;+;i)返回"'<';有符号/无符号不匹配“;?
代码如下:C++ 为什么for(int i=0;i<;THE_WORD.length();+;+;i)返回"'<';有符号/无符号不匹配“;?,c++,C++,代码如下: for (int i = 0; i < THE_WORD.length(); ++i) 我正在尝试制作一个“刽子手”程序(现在我自己学习cpp),这是一个for循环的一部分,循环遍历玩家应该猜测的单词,并将角色从星号更改为猜测的字母 如果我需要发布更多代码来回答我的问题,请告诉我 因为length()调用返回的类型是size\t,它通常是typedef的unsigned int。这就是为什么有符号整数是int和size\u t类型是std::string::length()返
for (int i = 0; i < THE_WORD.length(); ++i)
我正在尝试制作一个“刽子手”程序(现在我自己学习cpp),这是一个for循环的一部分,循环遍历玩家应该猜测的单词,并将角色从星号更改为猜测的字母
如果我需要发布更多代码来回答我的问题,请告诉我 因为
length()
调用返回的类型是size\t,它通常是typedef
的unsigned int
。这就是为什么有符号整数是int
和size\u t
类型是std::string::length()返回的值之间存在有符号/无符号不匹配的原因
<>请考虑将您的<代码>类型> < <代码>变量> <代码> SIZEZT 或任何其他无符号类型,但最好使类型相同(<代码> SIZEXT 和<代码> SIZEZT >):
for(size_t i=0;i
因为length()
调用返回的类型是size\t,它通常是typedef
的unsigned int
。这就是为什么有符号整数是int
和size\u t
类型是std::string::length()返回的值之间存在有符号/无符号不匹配的原因
<>请考虑将您的<代码>类型> < <代码>变量> <代码> SIZEZT 或任何其他无符号类型,但最好使类型相同(<代码> SIZEXT 和<代码> SIZEZT >):
for(size_t i=0;i
上面的链接处理的是size()
而不是length()
,但这是完全相同的问题。字符串长度不能是负的(仔细想想),这就是为什么std::string::length()
返回一个无符号的数量。size\t uint32\t uint8\t
等更适合于使用“裸”int和“无符号int”等类型,因为裸类型的大小是特定于平台的。例如,如果您现在将int更改为unsigned int并将编译切换为x64,您将遇到下一个问题,因为在64位编译器上,大小为8字节,而unsigned int仍然为4字节。上面的链接处理的是size()
,而不是length()
但这是完全相同的问题。字符串长度不能为负(仔细想想),这就是std::string::length()
返回无符号数量的原因。size\t uint32\u t uint8\u t
等优于“裸”int和“unsigned int”等类型,因为裸类型的大小是特定于平台的。例如,如果您现在将int更改为unsigned int,并将编译切换为x64,您将遇到下一个问题,因为在64位编译器上,大小为8字节,而unsigned int仍然为4字节。感谢您的解释,我正在阅读本书的第4章,它还没有提到“大小”!很高兴了解未来!谢谢你的解释,我在这本书的第四章,它还没有提到“尺寸”!很高兴了解未来!
const string THE_WORD;
for (size_t i = 0; i < THE_WORD.length(); ++i)