#define WERT -0.01
这里的float数组是我的数组:填充一个值
float name[9999];
我想WERT
的价值我无法找到一个短期的方式来填补它,试过
for (i = 1000; i <=9999 i+=1) {
name[i] = WERT;
}
但程序崩溃。循环太长。
还有其他方法吗?
#define WERT -0.01
这里的float数组是我的数组:填充一个值
float name[9999];
我想WERT
的价值我无法找到一个短期的方式来填补它,试过
for (i = 1000; i <=9999 i+=1) {
name[i] = WERT;
}
但程序崩溃。循环太长。
还有其他方法吗?
你迭代一个元素超出了数组的末尾 - 变化:
for (i = 1000; i <=9999 i+=1) {
name[i] = WERT;
}
到
for (i = 1000; i < 9999; ++i) {
name[i] = WERT;
}
(或增加name
大小为10000,如果你真的需要索引最多和最多9999)
还请注意丢失的;
,正如@jpw所指出的那样,以及更常用的++i
而不是i+=1
,正如@ pm100所指出的那样。
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;
}
切换到C++,并创建一个类WERTSfloat
与初始化值的构造器。
class WERTSfloat
{
public:
float Value;
WERTSfloat() { Value= WERT; }
};
然后
WERTSfloat ArrayOf9999WERTSfloats[9999];
将填补整个阵列,不管其规模:-)
编号在C中的一个小的语法问题的答案不能切换到C++ ... – jpw 2014-11-24 21:23:24
哈哈,你的幽默感在哪里? – 2014-11-24 21:24:18
可读性真的很差。至少调用Float_array_of_999_WERTS类,而不是将其与系统数据类型混淆。 – 2014-11-24 21:24:40
继零索引惯例,阵列覆盖索引0到9998包容性,而不是9999 – 2014-11-24 21:12:17
我们不是你的调试器....下次试试自己修复! – 2014-11-24 22:04:29
@Mcs请不要编辑您的问题以破坏其原始意图。它使这个线程不可读,对那些花时间回答的人是不公平的。 – JTG 2014-11-25 00:17:31