C++ Typumwandlung wie geht das?

...komplette Frage anzeigen

3 Antworten

> char Text[900]=Hier soll z stehen

Wenn Du den int einfach nur dorthin kopieren würdest, dann wären es (angenommen der int ist auf dem Compiler 32 bit groß) vier char Werte (Annahme dass der char 8 bit hat) und wenn einer davon \\\\0 ist, dann wäre ein nullterminierter string bereits zu Ende. Der Wert des int käme aber nicht zur Anzeige.

Wie immer in C/C++ sind Funktionen Deine Freunde.

Antwort bewerten Vielen Dank für Deine Bewertung

Du willst ja C++ und nicht C, daher vergiss (int), sprintf() oder anderes C-Zeug.

Einfache explizite Typumwandlungen sehen in C++ folgend aus:

static_cast<zielDatentyp>(variable); //explizit

Bei Dir also:

int z = static_cast<int>(f); //explizit

in z = f; //implizit

Beides geht, der Compiler macht die Typumwandlung bei der impliziten Variante automatisch. Die explizite ist aber übersichtlicher, weshalb diese vorzuziehen ist.

Das Umwandeln einer Zahl in einen String passt nicht zu dem Niveau, und ich glaube, Du hast die Aufgabe falsch verstanden (und wäre obendrein bei dem was ich sehe mehr als unnötig). Dort steht, dass es nämlich als char, und nicht als char*/c-String ausgegeben werden soll.

Die Lösung dafür wäre dann:

char c = z; //implizit

char c = static_cast<char>(z); //explizit

std::cout << c << std::endl;

Antwort bewerten Vielen Dank für Deine Bewertung
J0T4T4 16.01.2016, 13:10

Und falls Du wirklich aus Lust und Laune die Zahl ein einen String umwandeln möchtest, schau dir mal sstreams an.

1

Guck dir mal die Funktion sprintf() an, die sollte dir helfen. http://www.cplusplus.com/reference/cstdio/sprintf/

Antwort bewerten Vielen Dank für Deine Bewertung
Zoetrope1234 16.01.2016, 12:26

Danke, hab ich jetzt gemacht.

Leider liefert er jetzt für



for(int a=0;a<100,a++){

char buffer[50];

int n;

n=sprintf(buffer, "%d", pow(1.085,a));

printf("%s\n",&buffer);}



unsinnig große Werte im positiven sowie im Negativen.

Was mache ich falsch?


Danke

zoetrope


0
PROGRAM4FUN 16.01.2016, 12:52
@Zoetrope1234

Versuchs mal mit:

#include <stdio.h>
double pow(double x, double y);

int main(void)
{

for(int a=0; a < 100 ; a++){
char buffer[50];
int n;
double powerval = pow(1.085, (double)a);
n = sprintf(buffer, "%d", (int) powerval);

if(n == 0){
fprintf(stderr, "ERROR ON CONVERSION TO CHAR*");
return 1;
}
printf("%s\n",buffer);

}
return 0;
}
1

Was möchtest Du wissen?