C++获取函数返回值时报错E0513无法赋值给float变量问题求解
问题根因
- 核心错误是未正确调用函数:C++中调用无参函数必须在函数名后补充空括号
(),你写的num = GetData;本质是把GetData函数的指针地址赋值给float类型变量,和报错提示的int (*)()(函数指针类型)无法赋值给float类型完全对应,将该行修改为num = GetData();即可解决该报错。 - 隐含的顺序问题:C++要求函数在被调用之前,需要先完成声明或定义。你的代码中
GetData定义在main函数之后,需要在main前添加一行int GetData();的函数声明,否则后续会触发未定义函数的报错。 - 可选优化点:当前
GetData返回类型为int,但实际返回的是float类型的输入值,会发生小数精度截断。如果需要保留输入的小数部分,可将GetData的返回类型修改为float。
修正后参考代码
#include <iostream> using namespace std; // 提前声明函数 float GetData(); int main() { float num; // 正确调用函数,补充括号 num = GetData(); cout << "已获取输入值:" << num << endl; return 0; } float GetData() { float num; cout << "Enter the number you would like to evaluate: \n" << "(Number must be between 1,000,000 and -1,000,000.)"; cin >> num; if (num > 1000000 || num < -1000000) { cout << "Please enter a number between 1,000,000 and -1,000,000." << endl; return 0; } else { return num; } }
内容的提问来源于stack exchange,提问作者jmat35
相关产品推荐
相关产品推荐

