Datentypen-Problem



  • Die Frage ist, wieso die Variablenvereinbarungen nicht zulässig sind.

    //"char z=500" nicht zulässig, wieso?
    //Gibt den Wert an der Stelle 20 (14 hexadezimal) des ASCII-Code aus
    
    { char z=500;
      int x=z;   //x ergibt -12 (bei z=500)
      cout << x << '\t' << z;
      getch();
      return 0;
    }
    
    //"char c='\'' nicht zulässig, da ...
    // '\' ist eine Escape-Bedingung, daher vielleicht
    { char c='\'';
      cout << c;
      getch();
      return 0;
    }
    

    Bei beiden erhält man natürlich keine Fehlermeldung.
    Also was ist an den beiden Beispielen nicht zulässig?



  • //"char z=500" nicht zulässig, wieso?

    Warum wohl? Weil ein char in C++ nur ein Byte groß ist.



  • Dann wär das ein Überlauf?
    Wieso gibt der Borland dann kein Fehler aus?

    Und wie ist es beim 2. Bsp. ?



  • Beide sind zulässig. Die erste mag etwas fragwürdig sein, weil 500 meistens nicht in ein char passt, aber es gibt definierte Umwandlungsregeln für sowas, auf keinen Fall ist das ein Fehler. Die zweite ist zweifellos zulässig, c wird mit einem Apostroph initialisiert. Die Escape-Syntax '\'' ist auch korrekt.



  • selbst "return 0;" ist zulässig, obwohl überflüssig. 😃



  • beim ersten gibt er ja den Integer Wert von -12 aus, also läuft der einfach den Wertebereich weiter.
    Kann mal also nur erklären, dass char halt nur 256 Zeichen aufnehmen kann. (wie optimizer meinte)

    Laut dem Lösungsblatt sollten beide Bsp. aber nicht zulässig sein.
    Hm...


Anmelden zum Antworten