Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么for(int i=0;i<;THE_WORD.length();+;+;i)返回"'<';有符号/无符号不匹配“;?_C++ - Fatal编程技术网

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)