Wöchentlich Programme schreiben...



  • Das war wohl zu leicht:

    #include <conio.h>
    #include <iostream>
    using namespace std;
    
    int main()
    {                     
      cout<<"Was m"<<static_cast<char>(148)<<"chtest du?"<<endl;
      cout<<"Ich h"<<static_cast<char>(132)<<"tte da eine Frage:"<<endl;
      cout<<"\"Wieviel M"<<static_cast<char>(129)<<"he macht C++?\"";
      getch();
      return 0;
    }
    


  • HumeSikkins schrieb:

    Kann mir mal bitte jemand erklären, wo der wirkliche Fehler ist?

    Zu dem offiziellen Fehler gab es noch einen. stdout ist in keiner Weise (das ist ein wenig stark -- unter Unix ist das zB schon so ...) an stdin geknüpft. Da printf nicht selbständig den Puffer ausleert kann es passieren, dass die Eingabe verlangt wird (also scanf), ohne dass vorher irgendetwas ausgegeben wurde. Das kann man zwar so machen (ist also nicht wirklich falsch), trotzdem tut das Programm nicht das (für den Menschen offensichtlich) richtige.

    Erhard: Dein C++-Programm ist auch nicht der Renner. char kann vorzeichenbehaftet sein und das positive Maximum kann kleiner als 129 sein. Damit provozierst Du einen Überlauf. Der Code hat folglich undefiniertes Verhalten. Und was er ausgibt, wenn wir von richtigen Bedingungen ausgehen (unsigned char), wissen wir auch nicht.



  • @Daniel E.: Deine Hinweise sind interessant, aber "besser machen" würde mehr Lerneffekt bringen. 😉


Anmelden zum Antworten