代碼 `scanf("%lf", &i);` 讀入 `expf(1)` 會被當作 0,導致 `logf(0)` 域錯誤。
#include
#include
int main() {
double i = M_E; // math.h 定義的 e 常量,約 2.718281828459045
double x = log(i); // 自然對數
printf("%.6f\n", x); // 輸出 1.000000
return 0;
}
double i;
scanf("%lf", &i); // 輸入 2.71828
printf("%lf\n", log(i)); // 輸出 0.999999...
**結論**:`scanf` 只識別數字字面量,不支援數學表達式。程式中直接用 `M_E` 或 `exp(1.0)` 獲取 e 值。