pointer übungsbeispiel (C)

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/pointer_uebungsbeispiel_c_125838/page_1 - zur Vollversion wechseln!


davebastard schrieb am 29.09.2004 um 19:24

also..hab da einen Fehler bei der ausgabe des variablentyps double
hier der code:

Code:
#include <stdio.h>
#include <conio.h>

int main (void)
{
    char Arrayc[10],*pArrayc;
    int x,Arrayi[10],*pArrayi;
    double Arrayd[10],*pArrayd;
    
    pArrayc = Arrayc ; 
    pArrayi = Arrayi ;
    pArrayd = Arrayd ;
    for (x=0;x<10;x++)
        {
        *(pArrayc+x) = 'a';
        *(pArrayi+x) = 3;
        *(pArrayd+x) = 9;
        }
    
    printf("WERT         ADRESSE \n");
    for (x=0;x<10;x++)
        {
        printf ("%c   %x \n",*(pArrayc+x),(pArrayc+x));
        }
    for (x=0;x<10;x++)
        {
        printf ("%d   %x \n",*(pArrayi+x),(pArrayi+x));
        }
    for (x=0;x<10;x++)
        {
        printf ("%ld  %x \n",*(pArrayd+x),(pArrayd+x));
        }
    
    getch();
    return 0;
}

gut und jetzt die Ausgabe:
Code:
WERT         ADRESSE
a   22ff68
a   22ff69
a   22ff6a
a   22ff6b
a   22ff6c
a   22ff6d
a   22ff6e
a   22ff6f
a   22ff70
a   22ff71
3   22ff28
3   22ff2c
3   22ff30
3   22ff34
3   22ff38
3   22ff3c
3   22ff40
3   22ff44
3   22ff48
3   22ff4c
0  40220000
0  40220000
0  40220000
0  40220000
0  40220000
0  40220000
0  40220000
0  40220000
0  40220000
0  40220000

in den letzten 10 zeilen sollte doch jeweils 9 und dann die Adresse stehen :confused:
"%ld" zum ausgeben von double stimmt aber schon oder nicht ?
kann mir jemand helfen?


void0 schrieb am 29.09.2004 um 19:35

Zitat von davebastard
"%ld" zum ausgeben von double stimmt aber schon oder nicht ?
kann mir jemand helfen?

%f ist der richtige Code für double. %ld ist für 64bit Integer iirc.


davebastard schrieb am 29.09.2004 um 19:42

danke jetzt funktionierts ;)
Trotzdem ist die Ausgabe jetzt mit komma

Code:
 
9.000000  22fec8
9.000000  22fed0
9.000000  22fed8
9.000000  22fee0
9.000000  22fee8
9.000000  22fef0
9.000000  22fef8
9.000000  22ff00
9.000000  22ff08
9.000000  22ff10

gibts da nicht ne andere möglichkeit?
ich dachte immer double hat nur ganze Zahlen :confused:


mat schrieb am 29.09.2004 um 19:45

int ist ua für ganze zahlen. kommt aber auch auf deinen parameter bei printf an.


davebastard schrieb am 29.09.2004 um 19:48

ja ich weiß aber ich muß double verwenden, is leider bei der aufgabenstellung so :( .
Kann man die Ausgabe von double nicht so formatieren das das komma und die Nullen weg sind ?


ica schrieb am 29.09.2004 um 19:48

Zitat von mat
int ist ua für ganze zahlen. kommt aber auch auf deinen parameter bei printf an.

und auf was solls da drauf ankommen? int ist für ganze zahlen, da können auch deine parameter nix ändern (außer du meinst die formatierung damit nachstehende 0 angezeigt werden)


ica schrieb am 29.09.2004 um 19:50

http://www.goblack.de/desy/sc12chip...hek/printf.html

schau unter präzision


davebastard schrieb am 29.09.2004 um 19:57

thx

die richtige Zeile,falls es jemanden interessiert,lautet:

Code:
 printf ("%.f   %x \n",*(pArrayd+x),(pArrayd+x));


void0 schrieb am 29.09.2004 um 22:06

double ist halt denkbar ungeeignet für das was du da tust :)


davebastard schrieb am 30.09.2004 um 13:10

Zitat
ja ich weiß aber ich muß double verwenden, is leider bei der aufgabenstellung so .

wie schon gesagt es handelt sich um ein übungsbeispiel,klar dass es keinen sinn macht




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026