Hallo zusammen, ich wünsche euch einen schönen Samstag vormittag. Könnt ihr mir sagen, warum folgende Zeile double d=5, e=8; printf ("%f durch %f = %f",d,e,d/e ); " ? durch ? = ? " ausgibt ? Wie bekomme ich denn die Fragezeichen weg? Das war schon alles. Ich danke Euch im Vorraus sehr für die Hilfe. viele Grüße, Matthias.
Hallo, vielen Dank für Deine Antwort. doch es geht noch immer nicht. Als Ausgabe gibt es nur ein Fragezeichen. Der rechnet irgendwie nicht in dem Format. Muss ich noch eine Library includen? Grüße, MAtthias.
Matze schrieb: > Muss ich noch eine Library includen? Woher sollen wir das wissen, wenn Du es nicht einmal für nötig befindest, auch nur die kleinste Andeutung hinsichtlich Deines Zielsystems und der Produktionsumgebung zu machen?
Oh, entschuldigung, dass ich hdas alles gart nicht mitgeteilt habe. bin hier noch anfänger in dem Forum, deswegen. STK 500 mit Atmega 8515 Chip AVR Studio4.18 hier mal der ganze code, bin gespannt, woran der Fehler liegen soll #include <avr/io.h> #include <stdlib.h> #include "string.h" // #include <util/delay.h> // wenn das aktiviert, dann sendet er gar nichts, wißt ihr warum? brauche ich doch für delay funktionen, nicht wahr? #ifndef F_CPU #warning "F_CPU war noch nicht definiert, wird nun nachgeholt" #define F_CPU 8000000UL #endif #define BAUD 4800UL // Baudrate // Berechnungen #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) // clever runden #define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) // Reale Baudrate #define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = kein Fehler. #if ((BAUD_ERROR<990) || (BAUD_ERROR>1010)) #error Systematischer Fehler der Baudrate grösser 1% und damit zu hoch! #endif void uart_init(void) { UCSRB |= (1<<TXEN); // UART TX einschalten UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // Asynchron 8N1 UBRRH = UBRR_VAL >> 8; UBRRL = UBRR_VAL & 0xFF; } int uart_putchar(unsigned char c) //diese Funktion bekommt ein einzelnes Zeichen zugeschickt und gibt dieses aus { while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */ { } UDR = c; /* sende Zeichen */ return 0; } int main(void) { uart_init(); fdevopen (uart_putchar, NULL,0); int a= 5,b =8; double i=5.0/8.0 ; printf ("%d x %d = %d",a,b,a*b ); printf ( "\r\n" ); printf ("%d durch %d = %d",a,b,a/b ); printf ( "\r\n" ); printf ("%d durch %d = %4.2f",a,b,i ); // funktioniert so noch nicht, nur Fragezeichen printf ( "\r\n" ); while (1) { ; } return 0; }
Die libm muss auch noch mitgelinkt werden. Hab ich vorhin vergessen. Schau mal hier: http://winavr.scienceprog.com/avr-gcc-tutorial/using-sprintf--function-for-float-numbers-in-avr-gcc.html
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.