【发布时间】:2012-07-29 04:35:23
【问题描述】:
我已经尝试了 2 天来让这段代码正常工作。这只是一个又一个错误。
谁能指出我做错了什么?
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
int main()
{
int h = 0;
for(int a = 100; a<1000; a++)
for(int b = 100; b<1000; b++)
int c = a * b;
// Error: "c" is undefined
if ((c == reverse(c)) && (c > h))
h = c;
cout << "The answer is: " << h << endl;
}
int reverse (int x)
{
// Error: "'itoa' : function does not take 1 arguments"
string s = string(itoa(x));
reverse(s.begin(), s.end());
return (x);
}
使用 std::to_string 也会给我更多错误。
【问题讨论】:
-
听你的编译器。它告诉你问题是什么。
...does not take 1 arguments...,这告诉您以下两件事之一:1. 您正在向不接受任何参数的函数发送一个参数(在这种情况下极不可能),或者 2. 当您发送一个参数时函数至少需要两个,但可以是n(Arg)。如果n=100并且您发送99它会说“...函数不接受99 个参数”。 -
..function does not take 99 arguments...。当你超过它时也是如此,说同样的话!当您发送正确数量的参数时,它将正确编译。 -
通过进一步查看您的代码,以及您在 cmets 中对其他答案的持续沮丧,我建议您使用大括号,即使它们不是“需要”的!特别是如果您不断遇到简单的错误。如果您可以在观看 Seinfield 的同时破解代码,请忽略它们。我按要求使用它们!
-
也许你应该问一下如何解决你在使用
std::to_string时遇到的问题,它比 itoa 好 14 倍,而且是标准的。 -
仅供参考:在您有一个或多个程序员(您)定义了接受
n (+/-) x参数的重载函数的情况下,您不会收到该错误消息,但可能会得到意想不到的结果。