Änderung des Datentyps z.B. (long) test

Gast #2043553
Lesenswert?
• ▲
▼
Hallo!

Ich habe folgende (für euch sicher einfache) Frage:
1
char test=0; 
2

3
int main (void)
4
{
5

6
 while(1)
7
 {
8
  printf("Test: %u\n"),(long)test; // Ist ab hier der Datentyp von test "long" oder ist es nur für die Ausgabe long und springt danach wieder auf char zurück?
9
 }
10

11

12
return 0;
13
}
Gast #2043579
Lesenswert?
• ▲
▼
Lothar Miller schrieb:
> Question schrieb:
>> oder ist es nur für die Ausgabe long
> Ja.
>> und springt danach wieder auf char zurück?
> Er springt nicht zurück, weil er nie hingesprungen ist,
> sondern er wird nur für diese eine Stelle anders interpretiert.

Danke für die superschnelle Rückmeldung.

Das heißt also:
1
char test=0; 
2

3
int main (void)
4
{
5

6
 while(1)
7
 {
8
  // hier kann ich mit char wieder Rechnungen von -128 bis 127 durchführen oder?
9
  printf("Test: %u\n"),(long)test; // Ist ab hier der Datentyp von test "long" oder ist es nur für die Ausgabe long und springt danach wieder auf char zurück?
10
  // hier kann ich mit char wieder Rechnungen von -128 bis 127 durchführen oder?
11
 }
12

13

14
return 0;
15
}
Gast #2043613
Lesenswert?
• ▲
▼
Genau. Diese long in Klammern nennt sich "cast". Schau mal in ein 
C-Buch.

Es ändert den Typ nur sozusagen punktuell.

Nimm sowas wie:
1
char i;
2

3
while (i < (int) i * 128)

dann wird nur an der Stelle wo (int) steht das i als int betrachtet aber 
nicht da wo i alleine steht oder sonstwo.

Man könnte das umkehren und fragen, warum sollte an einer Stelle wo 
kein cast steht der Datentyp geändert werden? Man geht einfach davon 
aus, das es so ist, was auch konsistent ist, denn sonst müsste es einen 
Operator geben, der diese Umwandlung wieder rückgängig macht.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.