C++ 错误:与';不匹配;运营商>&燃气轮机';(操作数类型为';std::istream';{aka';std::basic#u istream<;char>;';}和';const int';)|

C++ 错误:与';不匹配;运营商>&燃气轮机';(操作数类型为';std::istream';{aka';std::basic#u istream<;char>;';}和';const int';)|,c++,pointers,C++,Pointers,我只是通过一个简单的面积计算程序来学习宏和指针/引用的工作。 代码如下: #include <iostream> #define PI = 3.141592653589793238 #define AREA(new_r) (PI*new_r*new_r) #define PERIMETER(new_r) (2*PI*new_r) using namespace std; int main() { cout<<"Enter the radius:&quo

我只是通过一个简单的面积计算程序来学习宏和指针/引用的工作。 代码如下:

#include <iostream>
#define PI = 3.141592653589793238
#define AREA(new_r) (PI*new_r*new_r)
#define PERIMETER(new_r) (2*PI*new_r)
using namespace std;

int main()
{
    cout<<"Enter the radius:";
    int r = 0;
    cin >> r;
    int *new_r = &r;
    printf("\n%darea",AREA(new_r),"\n%dPerimeter:", PERIMETER(new_r));
    return 0;
}
#包括
#定义PI=3.141592653589793238
#定义面积(新面积)(PI*新面积*新面积)
#定义周长(新建)(2*PI*new\r)
使用名称空间std;
int main()
{
库特;
int*new\u r=&r;
printf(“\n%darea”,面积(新面积),“\n%d周长:”,周长(新面积));
返回0;
}
这是一个错误

C:\Users\aakash\Desktop\C++\Eight_C++\main.cpp|11|error: no match for 'operator>>' (operand types are 'std::istream' {aka 'std::basic_istream<char>'} and 'const int')|
C:\Users\aakash\Desktop\C++\Eight_C++\main.cpp|11|错误:与“operator>>”不匹配(操作数类型为“std::istream”{aka“std::basic_istream”}和“const int”)|

我是一名初学者,请解释我是否缺乏任何基本/关键知识。

const int r=0

您正在初始化一个常量值,不能像以前那样重新分配它


cin>>r

该代码有几个问题

#定义PI=3.141592653589793238

声明宏的正确格式是:
#define
。无需使用
=
符号。因此正确的方法应该是
#定义PI 3.141592653589793238

在公式中使用
r
而不是
new\u r
是合乎逻辑的。另外,
new\r
是一个指针,因此它不会给出预期的输出

这就是错误消息背后的原因我们在声明变量时使用
const
来定义变量的赋值在任何情况下都不应更改。通过
const int r=0
我们的意思是
r
的值应始终为0且不能更改。这就是为什么我们不能在
r
中输入值。因此,为了存储一个值,我们需要使用另一个不是
const
的变量

最后的代码应该是这样的-

#include <iostream>
#define PI 3.141592653589793238
#define AREA(r) (PI*r*r)
#define PERIMETER(r) (2*PI*r)

using namespace std;

int main()
{
    cout<<"Enter the radius:";
    int r = 0;
    cin >> r;
    int *new_r = &r;

    printf("\narea: %f\nPerimeter: %f", AREA((*new_r)), PERIMETER((*new_r)));
    return 0;
}
#包括
#定义PI 3.141592653589793238
#定义区域(r)(PI*r*r)
#定义周长(r)(2*PI*r)
使用名称空间std;
int main()
{
库特;
int*new\u r=&r;
printf(“\n面积:%f\n周长:%f”,面积(*new\u r)),周长(*new\u r));
返回0;
}

一些警告<代码>#定义区域(r)(PI*新的#r*新的#r)
不使用
r
new\u r
是指针,因此
PI*new\u r*new\u r
不会相乘
printf
不使用插入运算符(
此代码中至少有5个错误。在
r
的声明中有
const
是其中最少的一个。首先感谢您的回答!但即使在从“r”和“new\r”中删除“const”之后声明时,我得到以下错误:main.cpp | 13 |错误:类型为'const char[9]和'const char[2]的操作数无效“到二进制”operator@Dindayal您提供的代码包含很多错误。一个接一个地挑出错误将在一段时间内造成相当严重的循环,因为您不会看到太多的更改。如果可以,请将宏替换为函数。函数比宏、美化的剪切粘贴替换和d可以捕捉到许多琐碎的错误,并且更容易理解错误消息。
const int r = 0;
    cin >> r;
printf("\n%darea:"<<" "<<AREA(new_r)<<"\n%dPerimeter:"<< PERIMETER(new_r));
printf("\narea: %f\nPerimeter: %f", AREA((*new_r)), PERIMETER((*new_r)));
#include <iostream>
#define PI 3.141592653589793238
#define AREA(r) (PI*r*r)
#define PERIMETER(r) (2*PI*r)

using namespace std;

int main()
{
    cout<<"Enter the radius:";
    int r = 0;
    cin >> r;
    int *new_r = &r;

    printf("\narea: %f\nPerimeter: %f", AREA((*new_r)), PERIMETER((*new_r)));
    return 0;
}