C ++ void函数练习错误

时间:2017-04-12 22:55:15

标签: c++

我是C ++的新手,我目前正在学习无效功能。 我正在尝试使用void函数编写一个对数字进行正方形的函数。这是我的代码。

#include "std_lib_facilities.h"

void square(int);

int main()
{
int x = 0;
cout << "Please enter a number. It will be squared.";
cin >> x;
cout << x << 't' << square(x);
}

void square(int x)
{
int y = x*x;
cout << y;
}

IDE给我的错误是:

 no match for 'operator<<' (operand types that are 'std::basic_ostream<char>' 
and 'void')

根据经验,很多人会询问头文件std_lib_facilities.h,这不是问题。我可以这么说,因为我使用这个头文件进行了很多练习,但它们都有效。

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

void函数不能直接返回值。大多数人会使用非void函数来实现平方,如下所示:

int square(int x)
{
  return x * x;
}

我看到你的square函数将平方值写入std::cout本身。这很奇怪,但是如果你真的想这样做,你应该用main函数替换最后一行:

cout << x << 't';
square(x);

通常不能在表达式中使用void函数的结果,这是原始代码的问题。

答案 1 :(得分:0)

square()无效 - 即它不会返回任何内容。

cout << x << 't' << square(x);尝试打印square()的返回值(我们已经说过它不存在)。这没有任何意义,所以编译器抱怨。

你想要做的是让square返回一个int而不是打印它。

int square(int x)
{
    return  x*x;
}

答案 2 :(得分:0)

我想改变返回类型会使错误消失。编译器错误是因为没有重载版本的&lt;&lt;它将void作为参数,因为你的函数(错误地)告诉编译器。