PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu Visual Studio Professional 2010



microdizko
15.10.2011, 10:03
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:

2016

zusätzlich auch das hier:

2011

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.

2007

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:

2008

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ß!

fireball
15.10.2011, 16:14
"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:



#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:



#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.

microdizko
15.10.2011, 19:31
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 :rolleyes: 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! ;)

fireball
16.10.2011, 09:58
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.

microdizko
16.10.2011, 11:12
Ahhhh! Ok, vielen Dank!