在C/C++中,为什么不能用这种方法给数组中的所有元素赋值2?[duplicate]

jogvjijk  于 2022-12-01  发布在  C/C++
关注(0)|答案(3)|浏览(157)

此问题在此处已有答案

Initialize all elements of C array to an integer [duplicate](1个答案)
昨天关门了。
我的系统是Ubuntu
下面是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>

#define LEN 16

using namespace std;

int main(){
    int a[16] = {2};
    for (int i=0; i<16; i++)
    {
        cout << a[i] << ' ';
    }
}

我在终端中通过以下命令编译了它:g++ t1.cpp -o t1 && ./t1
但结果是

2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
fdbelqdn

fdbelqdn1#

任何一本像样的书、教程或课程都应该告诉你

int a[16] = {2};

相当于

int a[16] = {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

如果您想将所有元素初始化为单个值,则需要显式地执行此操作。
您也可以在定义之后使用std::fill,将每个元素设定为值:

int a[16];
std::fill(begin(a), end(a), 2);

又有些吹毛求疵:您所做的是 * 初始化 *,而不是赋值。

pexxcrt2

pexxcrt22#

您已经将 a2赋给数组的索引0
您可能希望使用std::fill

const int size = 16;

int main() {
    int a[size];

    std::fill(a, a + size, 2);

    return 0;
}

相关问题