#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);
它将不再起作用,为什么会这样?
答案 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