#define WERT -0.01
这是我的数组:
float name[9999];
我想用WERT的值填充它
我找不到简短的路,并尝试了
for (i = 1000; i <=9999 i+=1) {
name[i] = WERT;
}
但程序崩溃了。循环太长了。
还有其他方式吗?
答案 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];
将填充整个数组,无论其大小如何: - )