Anfängerfrage: Ausgabe Boolescher Wert



  • Huhu liebe Community 🙂

    Bin etwas verzweifelt - hab ein wirklich sehr einfaches Problem und ich komm einfach nicht drauf. Mir ist das daher auch sehr peinlich, hier zu posten. Aber nach 30 min Suche im Netz ...
    Ich wär euch dankbar für eure Hilfe 🙂

    Ich hab die Aufgabe herauszufinden, was mein Programm macht, wenn ich diesen ausdruck programmiere: y = x < 9 && x >= 0

    Ich denke mal, es ist so, dass der Wert 1 (True) ausgegeben wird, wenn x im angegeben Intervall ist. Ansonsten wird wohl 0 ausgeben. Nur wie Programmier ich jetzt das so, dass y auch 1 / 0 oder true / false beinhaltet.

    Oder besser gesagt - in der Variable y ist auch der richtige Zahlenwert 0, oder 1. Aber meine Ausgabe am Bildschirm klappt nicht. Da kommt immer eine 7-stellige Zahl heraus.

    Hier mal das Progrämmchen:

    #include <stdio.h>
    
    void main ()
    {
    	int x, y;
    
    	printf("Bitte gib eine ganze Zahl deiner Wahl ein: \n");
    	scanf("%d", &x);
    
    	printf("Aufgabe 1:\ny = x < 9 && x >= 0  --> y ist 1, wenn 0 <= x < 9\n");
    	y = x < 9 && x >=0;
    	printf("y = %d", &y);
    }
    

    Liegt wohl alles an %d? Danke für eure Hilfe... 🙂

    Mfg



  • Die Zeile

    y = x < 9 && x >=0;
    

    hat denselben Effekt wie:

    if (x < 9 && x>=0) y = x;
        else
        y = 0;
    

    Hab das nun mit C++ und std :: cout /std :: cin getestet. Ich kenn mich zwar mit prinf() nicht wirklich aus, aber ansich sollte die Ausgabe doch dieselbe sein?

    &d beudeutet doch, dass das in Dezimal ausgeben wird oder?



  • Ragdar schrieb:

    Oder besser gesagt - in der Variable y ist auch der richtige Zahlenwert 0, oder 1. Aber meine Ausgabe am Bildschirm klappt nicht. Da kommt immer eine 7-stellige Zahl heraus.

    Liegt wohl alles an %d? Danke für eure Hilfe... 🙂

    Hi,
    nein das liegt daran, da du die Speicheradresse von y ausgibst und nicht den Wert. &y und y sind unterschiedliche Dinge...

    Mit

    printf("y = %d", y);
    

    funktionierts...

    Gruß



  • Mach mal das & weg. Ansonsten gibst du natürlich die Adresse aus...



  • Ragdar schrieb:

    void main ()
    

    Wääääääähhhh Maaaamaaaaa, da schreibt einer void main, sag ihm sofort, daß er damit aufhören soll!!!!!!!!!



  • Hallo!

    Ich soll sagen das du besser

    int main ()
    

    Verwenden solltest 😃



  • huhu, guten morgen 🙂

    hab ichs mir doch gedacht, dass es so ne kleinigkeit ist 🙂 dankeschön für eure nette hilfe 🙂

    naja unser prof. an der uni meinte, dass wir (noch) keinen return wert brauchen, deswegen spar ich mir ja mit void eine programmierzeile 🙂

    schönes we! 🙂



  • die zeile sparst du auch bei 'int main()', denn ein 'return' kann bein main weggelassen werden 😉
    ganz davon abgesehen, dass in einem 'hosted environment' der C-standard eine main-funktion verlangt, die 'int' zurückgibt.



  • Ragdar schrieb:

    huhu, guten morgen 🙂

    hab ichs mir doch gedacht, dass es so ne kleinigkeit ist 🙂 dankeschön für eure nette hilfe 🙂

    naja unser prof. an der uni meinte, dass wir (noch) keinen return wert brauchen, deswegen spar ich mir ja mit void eine programmierzeile 🙂

    schönes we! 🙂

    Ich bin erstaunt, wie viele User mit der Ausrede kommen "Mein Prof. hat es so gemacht/gemeint/geschrieben..."

    Sind die Profs. in Deutschland denn so blöd oder ignorant oder einfach faul ihre Folien nach zig Jahren Vorlesung mal zu aktualisieren?



  • supertux schrieb:

    Sind die Profs. in Deutschland denn so blöd oder ignorant oder einfach faul ihre Folien nach zig Jahren Vorlesung mal zu aktualisieren?

    Die Frage hab ich mir auch schon oft gestellt.



  • Wäre mal eine Frage für die Technikgeschichte oder sogar für die Literaturwissenschaft, wer von wem das void main() abgeschrieben hat.

    Vielleicht ist auch das passiert: Die Profs probieren void main() und meinen, wenn der Compiler nichts dagegen hat, ist es auch richtig nach K&R.

    Übrigens der Borland C++ 5.5 meckert, wenn das return weggelassen wird.


Anmelden zum Antworten