C ++:对函数有些困惑

时间:2011-06-13 09:01:59

标签: c++

#include <iostream>
using namespace std;

int myFunc (unsigned short int x );

int main ()
{
    unsigned short int x, y;
    x=7;
    y = myFunc(x);
    std::cout << "x:" << x << "y: " << y << "\n";
    return 0;
}

int myFunc (unsigned short int x )
{
    return (4 * x );
}

现在这个^代码有效,但是当我改变

y = myFunc(x);

y = myFunc(int);

它将不再起作用,为什么会这样?

4 个答案:

答案 0 :(得分:5)

y =myFunc(int);

这不是有效的表达方式。 int是一种类型,您不能将类型作为参数传递给函数。

答案 1 :(得分:3)

如果
X = 7;

y = myFunc(x); 等于 y = myFunc(7);

如果你使用int,它有什么价值?所以发生错误

答案 2 :(得分:2)

因为int是保留字。即使它不是 - 你还没有声明(和定义)名为“int”的标识符。

答案 3 :(得分:1)

这是因为编译器期望类型为unsigned short int的值,但您已通过类型 int。你期望得到什么? 4*int的结果未定义。

您可以在使用模板时传递类型。看看以下示例:

// Here's a templated version of myFunc function 
template<typename T>
T myFunc ( unsigned short int x )
{
    return (4 * x );
}

...

y = myFunc<int>( x ); // here you can pass a type as an argument of the template,
// but at the same moment you need to pass a value as an argument of the function