刚开始学习c ++就会遇到此错误:
C:\Users\KC\Documents\Math.cpp|9|error: invalid type argument of unary '*' (have 'double')|
这是代码:
#include <iostream>
#include <cmath>
#define M_PI
using namespace std;
int main()
{
double area, radius = 1.5;
area = M_PI * radius * radius;
cout << area << "\n";
}
有人可以向我解释我做错了什么。谢谢
答案 0 :(得分:3)
#define M_PI
应该是
#define M_PI 3.14159
(或您想要给pi赋予的任何值)。
您将M_PI
定义为空,表示此代码
area = M_PI * radius * radius;
成为此代码
area = * radius * radius;
并且您的编译器正在抱怨意外的*
。
答案 1 :(得分:2)
我建议使用:
#define _USE_MATH_DEFINES
#include <cmath>
并删除此行:
#define M_PI
此答案的更多信息:M_PI works with math.h but not with cmath in Visual Studio
答案 2 :(得分:1)
您使用了预处理器指令#define M_PI
,该指令将M_PI
定义为空字符串。因此,在用M_PI
替换空内容之后,表达式
area = M_PI * radius * radius
成为
area = * radius * radius
,第一个星号成为一元运算符,整个表达式解释为
area = (* radius) * radius
该一元星号不能合理地与double
参数一起使用,因此会产生错误消息。