【问题标题】:C++ float array initialization [duplicate]C ++浮点数组初始化[重复]
【发布时间】:2012-09-29 04:53:38
【问题描述】:

可能重复:
C and C++ : Partial initialization of automatic structure

在阅读Code Complete 时,我遇到了一个 C++ 数组初始化示例:

float studentGrades[ MAX_STUDENTS ] = { 0.0 };

我不知道 C++ 可以初始化整个数组,所以我测试了它:

#include <iostream>
using namespace std;

int main() {
    const int MAX_STUDENTS=4;
    float studentGrades[ MAX_STUDENTS ] = { 0.0 };
    for (int i=0; i<MAX_STUDENTS; i++) {
        cout << i << " " << studentGrades[i] << '\n';
    }
    return 0;
}

程序给出了预期的结果:

0 0
1 0
2 0
3 0

但是将初始化值从0.0 更改为9.9

float studentGrades[ MAX_STUDENTS ] = { 9.9 };

给出了有趣的结果:

0 9.9
1 0
2 0
3 0

初始化声明是否只设置数组的第一个元素?

【问题讨论】:

    标签: c++ arrays floating-point initialization


    【解决方案1】:

    您只需将前 N 个位置初始化为大括号中的值,所有其他位置都初始化为 0。在这种情况下,N 是您传递给初始化列表的参数数量,即,

    float arr1[10] = { };       // all elements are 0
    float arr2[10] = { 0 };     // all elements are 0
    float arr3[10] = { 1 };     // first element is 1, all others are 0
    float arr4[10] = { 1, 2 };  // first element is 1, second is 2, all others are 0
    

    【讨论】:

    • 别忘了你可以使用一个空的初始化列表,在这种情况下所有元素都设置为零。
    • @MarkRansom:是的,我会补充的,谢谢。
    • 你说 0 是个特例,但事实并非如此。它将第一个元素设置为 0,然后将其余元素设置为 0。
    • @sftrabbit:是的,听起来是不是这样?谢谢。
    【解决方案2】:

    不,它会将所有未明确设置为默认初始化值的成员/元素设置为默认初始化值,对于数字类型为零。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      相关资源
      最近更新 更多