#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void main(){
double public;
double a = 16;
double b = 54;
public = (pow(a,b));
printf("%.21f\n", public);
}
Code ausgeführt mit:
gcc main.c -lm
Was mache ich falsch?
Sie wollen also wissenschaftliche Notation?
– Shafik Yaghmour
22. Januar 2014 um 16:09 Uhr
Lesen Sie auch über die g Formatbezeichner.
– Yves Daust
7. August 2017 um 22:10 Uhr
Ihr Code ist Ausstellungen UB (main() gibt ein zurück int – kein void oder irgendetwas anderes, egal was zu “funktionieren” scheint, egal wie oft oder auf wie vielen Systemen es ausgeführt wird). … was ich sehe, weist die Antwort jetzt darauf hin. Gut. Wie auch immer, UB ist eine schlechte Nachricht, aber zum Glück ist dieser leicht zu beheben.
– Pryftan
15. Oktober 2019 um 12:39 Uhr
Was mache ich falsch?
Verschiedene Dinge:
Verwenden %.10e Format für die wissenschaftliche Notation mit printf für einen Ausdruck mit zehn Stellen nach dem Punkt,
Rückgabe an int von deiner main,
Ziehen Sie in Betracht, es nicht zu verwenden public um eine Variable zu benennen, für den Fall, dass Ihr Programm nach C++ portiert werden müsste, wo public ist ein Schlüsselwort.
So können Sie Ihr Programm reparieren:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(){
double p;
double a = 16;
double b = 54;
p = (pow(a,b));
printf("%.10e\n", p);
return 0;
}
Wenn Sie eine wissenschaftliche Notation benötigen, müssen Sie die verwenden %eFormatbezeichner:
printf("%e\n", public);
^^
Ebenfalls, public ist ein Stichwort in C++ und daher wäre es eine gute Idee, dies und alle anderen zu vermeiden Schlüsselwörter falls dieser Code portabel sein muss.
Lustige Wortspiele: Öffentlichkeit [is a] Stichwort (und Öffentlichkeit ist im grässlichen C++), Schlüsselwörter in Fall (auch ein Schlüsselwort in C und C++ und auch in anderen). Es ist jedoch eine großartige Idee, Code mit C++-Namen zu schreiben, nur um die C++-Konvertierungen zu verhindern! Aber Sie haben Recht, wenn der Wunsch besteht, es zu portieren, sollten Sie das besser nicht tun.
– Pryftan
15. Oktober 2019 um 12:48 Uhr
14329100cookie-checkWarum verwendet printf keine wissenschaftliche Notation?yes
Sie wollen also wissenschaftliche Notation?
– Shafik Yaghmour
22. Januar 2014 um 16:09 Uhr
Lesen Sie auch über die
g
Formatbezeichner.– Yves Daust
7. August 2017 um 22:10 Uhr
Ihr Code ist Ausstellungen UB (
main()
gibt ein zurückint
– keinvoid
oder irgendetwas anderes, egal was zu “funktionieren” scheint, egal wie oft oder auf wie vielen Systemen es ausgeführt wird). … was ich sehe, weist die Antwort jetzt darauf hin. Gut. Wie auch immer, UB ist eine schlechte Nachricht, aber zum Glück ist dieser leicht zu beheben.– Pryftan
15. Oktober 2019 um 12:39 Uhr