編譯運行以下 C 程式碼時,程式拋出 Runtime Error R6002 - floating point not loaded:
#include <stdio.h>
#define N 6
int input(float arr[]);
void main() {
float a[N];
input(a);
}
int input(float arr[]) {
int i;
for(i=0; i<N; i++) {
printf("請輸入第%d的值:", i);
scanf("%f", &arr[i]);
}
return N;
}
R6002 錯誤通常表示「浮點數運算庫未正確鏈接」或「浮點數變數未初始化導致運行時檢測異常」。在舊版編譯器(如 Turbo C、早期 MSVC)中,若程式僅聲明 float 陣列但未對其元素進行顯式初始化或實際浮點運算,編譯器可能優化掉浮點庫鏈接,導致運行時崩潰。
在陣列聲明處進行零初始化,強制編譯器鏈接浮點庫:
float a[N] = {0}; // 或 float a[N] = {0.0f};
或者在 main 函數開頭加入一行虛擬浮點運算(如 float dummy = 0.0f; dummy += 1.0f;),同樣能觸發庫鏈接。
float arr[10] = {0};。初始化不僅消除 R6002,更能避免後續使用未初始化記憶體帶來的不可預測行為。