c++ - 未显示匹配运算符
问题描述
打印第 17 行的值时遇到问题。请帮我解决问题
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int a,b,i;
cin>>a>>b;
int count=0;
for(i=9;i<=b;i*10+9)
{
count++;
}
}
cout<<count;
return 0;
}
解决方案
您在循环中声明的count
变量在while
您尝试打印它时不再在范围内。
范围内是功能std::count
。这就是为什么你会得到一个错误
error: no match for 'operator<<' (operand types are 'std::ostream' {aka 'std::basic_ostream<char>'} and '<unresolved overloaded function type>')
代替
error: 'count' was not declared in this scope
这是您不应该使用的另一个原因using namespace std
。没有它就不会出现这种模棱两可的情况。
与您实际提出的问题无关,循环
for(i=9;i<=b;i*10+9)
永远不会终止(假设b
大于 9),因为您的循环实际上修改了i
. 它应该是
for (i = 9; i <= b; i = i * 10 + 9)
// ^^^ Assign the result back to i
你的编译器应该已经警告你了。例如,GCC 给出以下警告
main.cpp:12:26: warning: for increment expression has no effect [-Wunused-value]
12 | for(i=9;i<=b;i*10+9)
如果它没有警告你,那么你应该确保你在编译时启用了警告。
也不相关,但标题bits/stdc++.h
不标准,不应该使用。 std::cout
在标准头文件中声明iostream
。同样,如果您使用它而不是包含整个标准库,那么您就不太可能遇到令人困惑的歧义。
推荐阅读
- python - 当多个实例存在前缀时,是否有处理正则表达式的标准方法?
- python - 使用 Python 绘制分数汉明距离的概率质量函数
- java - 在哪里可以找到 HERE API 的访问密钥?
- android - kotlin 注释可以将代码注入方法吗?
- r - 作为观察者动态调整闪亮仪表板中ggplot的高度
- java - 从文件末尾向后读取字节,直到达到条件
- npm - 将 Sencha Cmd 创建的包迁移到 npm
- scala - 无法弄清楚为什么模拟方法不起作用
- java - 使用 for 循环遍历 HashSet
- docker - Apache2 - 使用 docker 服务名称访问但使用 IP 地址时出现 400 错误请求