
虽然不影响,但是看到警告很难受:(
for (int i = 0; i < num.length();i++) {
if (i != 0) cout << " ";
cout << str[num[i] - '0'];
}
原因:无法比较有符号(signed)整数和无符号(unsigned)整数。int是有符号数,length()返回的是 无符号整数。
解决方案
- 强制转换类型 或者将 i 声明为unsigned 类型的int
for (int i = 0; i < (int)num.length();i++) {
if (i != 0) cout << " ";
cout << str[num[i] - '0'];
}
- 将 i 声明为size_t类型,需要导包 #include < cstddef >
for (size_t i = 0; i < num.length();i++) {
if (i != 0) cout << " ";
cout << str[num[i] - '0'];
}
int 和 size_t 区别具体参考:size_t和int区别
本文解决C++中常见的编译警告,关于有符号(signed)整数与无符号(unsigned)整数进行比较的问题。通过实例展示了如何使用强制类型转换或改变变量类型来避免此类警告,确保代码的正确性和可读性。

6606

被折叠的 条评论
为什么被折叠?



