严重性 代码 说明 项目 路径 文件 行 禁止显示状态 错误 C2679 二元“=”: 没有找到接受“int”类型的右操作数的运算符(或没有可接受的转换)

#include
using namespace std;

int main()
{
    int  i, n, * p;
    cout << "请输入数组元素的个数:";
    cin >> n;

    if ((p = new int[n])==0)
    {
        cout<< "内存分配失败,推出!" << endl;
        exit(1);
    }
    for (int i = 0;i < n;i++)
        cout<< p[i]=i * 2;

    cout << "数组中各元素分别为:" << endl;
    for (i=0;i < n;i++)
        cout<< p[i]<< " ";
    cout << endl;

    delete[]p;

    return 0;
}

该回答引用ChatGPT

在这段代码中,将赋值操作符 = 放在了输出语句中,导致编译器无法识别该语句的类型,从而产生了错误。应该将赋值操作和输出语句分开来写。

可以将语句 cout << p[i]=i * 2; 修改为 p[i] = i * 2; cout << p[i]; ,即先进行赋值操作,再输出该元素的值。修改后的代码如下:

#include<iostream>
using namespace std;
 
int main()
{
    int  i, n, * p;
    cout << "请输入数组元素的个数:";
    cin >> n;
 
    if ((p = new int[n])==0)
    {
        cout<< "内存分配失败,推出!" << endl;
        exit(1);
    }
    for (int i = 0;i < n;i++) {
        p[i] = i * 2;
        cout<< p[i];
    }
 
    cout << "数组中各元素分别为:" << endl;
    for (i=0;i < n;i++)
        cout<< p[i]<< " ";
    cout << endl;
 
    delete[]p;
 
    return 0;
}