使用单个值对float数组进行伪造

时间:2014-11-24 21:09:09

标签: c arrays

#define WERT -0.01

这是我的数组:

 float name[9999];

我想用WERT的值填充它

我找不到简短的路,并尝试了

 for (i = 1000; i <=9999 i+=1) {
      name[i] = WERT;
 }

但程序崩溃了。循环太长了。

还有其他方式吗?

3 个答案:

答案 0 :(得分:2)

您正在迭代一个超出数组末尾的元素 - 更改:

for (i = 1000; i <=9999 i+=1) {
      name[i] = WERT;
}

for (i = 1000; i < 9999; ++i) {
      name[i] = WERT;
}

(或者将name的大小增加到10000,如果你确实需要索引到9999并且包括9999。)

如@jpw所指出的那样,请注意丢失的;,以及++i而不是i+=1的惯用用法,如@ pm100所述。

答案 1 :(得分:2)

C数组索引从0开始,并以比数组长度小1的索引结束。当你试图写入名称[9999]时,你得到了一个SIGSEGV或者类似的东西,因为没有这样的数组元素 - 你很幸运,并没有覆盖其他一些对象。 (或者你因为这个原因而覆盖并崩溃了。)

修复:

for (i = 1000; i <9999 i+=1) {
      name[i] = WERT;
 }

对于额外的样式点,不要重复数字常量。

相反

#define ARRAY_LEN 9999
float name[ARRAY_LEN];

    for (i = 1000; i < ARRAY_LEN; i+=1) {
          name[i] = WERT;
     }

答案 2 :(得分:2)

切换到C ++并使用初始化值的构造函数创建一个类WERTSfloat

class WERTSfloat
{
  public:
    float Value;
    WERTSfloat() { Value= WERT; }
};

然后

WERTSfloat ArrayOf9999WERTSfloats[9999]; 

将填充整个数组,无论其大小如何: - )