Ich weiß nicht, ob ich etwas Offensichtliches verpasse, aber es scheint, dass ich Quadratwurzeln einer Variablen in C nicht berechnen kann; Die Funktion sqrt () scheint nur auf Konstanten zu funktionieren. Das ist mein Code:
%Vor%Wenn ich dieses Programm ausführe, erhalte ich den folgenden Fehler:
%Vor% Wenn ich jedoch das Argument in sqrt () durch eine Konstante wie 2.0 (zB b = sqrt(2.0)
) ersetze, funktioniert es gut. Ist sqrt () nicht mit Variablen oder etwas zu arbeiten?
Danke für die Hilfe
Wahrscheinlich müssen Sie -lm
beim Kompilieren hinzufügen. Wenn Sie die Quadratwurzel einer Konstanten verwenden, optimiert der Compiler den Code, indem er die Quadratwurzel während der Kompilierung verwendet, sodass% code% überhaupt nicht verwendet wird.
Verwenden Sie den Befehl gcc -Wall -o "test2" "test2.c" -lm
, der dies wahrscheinlich beheben wird.
Dies umfasst die mathematische Bibliothek zusätzlich zur standardmäßigen C-Laufzeitbibliothek. Auf den meisten Systemen ist die Math-Bibliothek historisch eine separate Entität, die explizit angefordert werden muss.
Im Falle von gcc müssen Sie die Bibliothek verknüpfen.
gcc filename.c -lm.
Im Fall von g ++ ist es jedoch nicht nötig, die Bibliothek zu verknüpfen, damit dies funktioniert:
g ++ Dateiname.c -o Dateiname Sobald die Kompilierung erfolgreich ist.
Geben Sie einfach ./filename in G ++ ein. und geben Sie ./a.out in Gcc ein.
Kompilieren mit:
%Vor%Sie müssen eine Verknüpfung mit der Mathematikbibliothek herstellen.
gcc verbindet die Standardbibliotheken nicht standardmäßig. Sie müssen dies also nur tun, wenn Sie über gcc kompilieren:
gcc dateiname.c -lm .
Im Fall von g ++ ist es jedoch nicht nötig, die Bibliothek zu verknüpfen, damit dies funktioniert:
g ++ Dateiname.c -o Dateiname
Das funktioniert gut für mich. Ich denke, es gibt ein Problem mit Ihrer Mathebibliothek. Versuchen Sie es erneut zu verknüpfen und zu sehen. Andere weise Code ist vollkommen perfekt.
Tags und Links c compiler-errors math.h sqrt