#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