User Tag List

Ergebnis 1 bis 5 von 5

Thema: Frage zu Visual Studio Professional 2010       

  1. #1
    Platzanweiser Avatar von microdizko
    Registriert seit
    01.03.2011
    Beiträge
    290

    Frage zu Visual Studio Professional 2010

    Tach zusammen!

    Ich beschäftige mich derzeit mit C. Als Umgebung nutze ich die Testversion von Visual Studio Professional 2010. Danach werd ich wohl Express nehmen. Sollte für meine Zwecke reichen.

    Jetzt hab ich mal 1-2 Fragen dazu:

    Wenn ich das hier eingebe:

    #include <stdio.h>
    main()
    {
    int x;
    printf("\nBitte Zahl eingeben: ");
    scanf("%i",&x);
    if (x > 0)
    printf("Die Zahl ist positiv.");
    else
    printf("Die Zahl ist negativ.");
    }
    (aus Erlenkötter, C programmieren von Anfang an)

    erhalte ich bei der Ausgabe folgende Fehlermeldung:

    fehler2.jpg

    zusätzlich auch das hier:

    fehlermeldung 2.jpg

    Abgesehen davon, dass das Programm bei Eingabe von "0" (beabsichtigterweise) eine falsche Ausgabe produziert, kann ich mir keinen Reim auf o.g. Fehler machen.

    Gebe ich nämlich zwischen "#include" und"main()" "void" ein, klappt das ganze ohne Fehlermeldung.

    void.jpg

    Jetzt hab ich zwar noch keine Ahnung, was genau void tut. Das Komische ist aber, lösche ich jetzt "void" wieder - und das Programm sieht genauso aus wie vorher - zeigt er mir zwar wieder eine Fehlermeldung an:

    fehlermeldung 3.jpg

    führt das Programm aber aus, als wär nichts. Warum ist das so?

    Infos:

    - Win7 64bit
    - VS 2010 Prof.
    - Ich erstelle Projekte wie folgt:
    Datei - neu - Projekt - Win32-Konsolenanwendung - Eingabe Name - ok.
    Dann: weiter - Haken bei "leeres Projekt" - fertig stellen.
    Dann: Rechtsklick auf Quelldateien - Hinzufügen - Neues Element - C++-Datei - Eingabe Name - Hinzufügen.

    -------------------------------------

    VS weigert sich bei der Ausgabe das Grad-"°"-Zeichen anzuzeigen. Liegt das nicht ganz links oben über "^"?

    Hier ist doch sicher jemand unterwegs, der sich mit sowas auskennt, oder?

    Schon mal danke für Hinweise und nen schönen Gruß!

  2. #2
    Mr. Hochdruck
    Registriert seit
    15.02.2011
    Beiträge
    3.068
    Blog-Einträge
    3
    "void main()" -> die Hauptfunktion des Programms liefert keinen Rückgabewert an de aufrufende Shell.

    Das ist explizit zu definieren.

    main() ohne Typspezifikation ist nicht zulässig. Wenn Du explizit einen Rückgabewert willst, musst du "int main()" definieren und die Funktion muss einen Wert returnieren.


    also entweder:

    Code:
    #include <stdio.h>
    void main()
    {
       int x;
       printf("\nBitte Zahl eingeben: ");
       scanf("%i",&x);
       if (x > 0)
          printf("Die Zahl ist positiv.");
       else
          printf("Die Zahl ist negativ.");
    }

    oder:

    Code:
    #include <stdio.h>
    
    int main()
    {
       int x;
       printf("\nBitte Zahl eingeben: ");
       scanf("%i",&x);
       if (x > 0)
       {
          printf("Die Zahl ist positiv.");
          return 0;
       }
       else
       {
          printf("Die Zahl ist negativ.");
          return 1;
       }
    }

    Wobei die Logik streng genommen falsch ist, weil 0 nicht mathematisch negativ ist.
    Geändert von fireball (15.10.2011 um 16:18 Uhr)

  3. #3
    Platzanweiser
    Threadstarter
    Avatar von microdizko
    Registriert seit
    01.03.2011
    Beiträge
    290
    Zitat Zitat von fireball Beitrag anzeigen
    Wobei die Logik streng genommen falsch ist, weil 0 nicht mathematisch negativ ist.
    Das ist quasi Absicht. Das Programm hatte ich grad vom Buch abgeschrieben und der Kontext im Buch weist explizit darauf hin. Sozusagen ein Beispiel wie mans nicht machen soll.

    Den Rest, den Du schreibst, hab ich nicht 100%ig verstanden. Bin noch gaaaaaaanz am Anfang. Allerdings hab ich das mit dem Rückgabewert schonmal gehört, insofern macht das unwissenderweise schon Sinn.

    Trotzdem gut zu wissen wie es denn ohne Fehlermeldung klappt! Merkwürdig aber dann, dass das in dem Beispiel, wobei, eigentlich bei allen Beispielen bislang, so aufgeführt ist. Und auf die genaue Funktion von void ist der Autor noch nicht zu sprechen gekommen.

    Dank Dir vielmals für Deine Antwort und den Hinweis auf die richtige Schreibweise!

    Aber warum klappt das Programm beim ersten Versuch auszugeben (ohne void) nicht, und dann (nach hinzufügen - laufen lassen und entfernen des void's) doch? (wenn auch mit Fehlermeldung)?? Ist doch merkwürdig.

    Naja, wenn ich mich an die gute alte C64-Zeit zurückerinnere, in der es scheinbar zig verschiedene nicht-beeinflussbare Zufalls-Fehlerquellen gab, relativiert sich das ganze doch erheblich.

    Vielen Dank nochmals und schönen Gruß!

    PS: Falls einer das zweite Mysterium aufklären kann, immer her damit!

  4. #4
    Mr. Hochdruck
    Registriert seit
    15.02.2011
    Beiträge
    3.068
    Blog-Einträge
    3
    Zitat Zitat von microdizko Beitrag anzeigen
    Aber warum klappt das Programm beim ersten Versuch auszugeben (ohne void) nicht, und dann (nach hinzufügen - laufen lassen und entfernen des void's) doch? (wenn auch mit Fehlermeldung)?? Ist doch merkwürdig.
    Tut es nicht. Der COmpilerfehler ist ja deutlich zu sehen. VS bietet DIr aber an, die alte, vorhandene Version zu benutzen und zu starten.

  5. #5

Ähnliche Themen

  1. Facebook-Frage
    Von Sabbelbacke im Forum OffTopic
    Antworten: 12
    Letzter Beitrag: 08.11.2011, 09:20
  2. AV-Receiver: Frage zu 2xSub out
    Von jkjk im Forum A/V-Receiver
    Antworten: 5
    Letzter Beitrag: 01.07.2011, 09:43
  3. Frage zum Philips 46 PFL 8505 K/02
    Von Rodalo im Forum TV
    Antworten: 0
    Letzter Beitrag: 30.05.2011, 08:39
  4. Frage Mietrecht - leider dringend :-/
    Von frauhansen im Forum Lebenshilfe
    Antworten: 29
    Letzter Beitrag: 20.05.2011, 16:59
  5. Frage an die AD Spezialisten hier...
    Von frauhansen im Forum PC
    Antworten: 8
    Letzter Beitrag: 09.03.2011, 12:22

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •