WinFuture-Forum.de: Schulprojekt In C++ - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Schulprojekt In C++ Was kann man programmieren?

#16 Mitglied ist offline   Dimension 

  • Gruppe: aktive Mitglieder
  • Beiträge: 772
  • Beigetreten: 17. November 03
  • Reputation: 0

geschrieben 13. November 2004 - 11:46

Zitat (return_0: 13.11.2004, 09:27)

Dass wenn man return; weglässt, implizit return 0 übergeben wird ist mir wohl schon klar.

Woher soll diese implizite Null kommen?

Wenn du bei einer nicht-void-Funktion return(x) weglässt (oder einfach nur return; ohne Parameter nimmst), wird auf x86 der Wert zurückgegeben, der sich noch in EAX befindet. Das kann 0 sein, die Rückgabe vom letzten Funktionsaufruf oder sonstwas ...

Dieser Beitrag wurde von Dimension bearbeitet: 13. November 2004 - 11:49

0

Anzeige



#17 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.505
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 13. November 2004 - 12:02

Zitat

Die Funktion muss aber int main() heißen und nicht void main()...

Nein, _muss_ nicht...

Zitat

Aber wenn dann richtig, schließlich will er Programme in C++ schreiben.

void main() ist konform zu C++98 und C99. Liegt einfach daran daß main als __external int main(bla) default:0 definiert ist. void main() _ist_ standardkonform und beißt sich nicht mit der Definition.

Zitat

Kann man in einer C++ Konsolenanwendung auch Graphen zeichnen?

Naja, du musst genauso wie in Nicht-Konsolen-Programmen einen DC nehmen, ein paar Handles setzen, ein Window generieren etc. - bei Konsolenprojekten hast du's nur so, daß die Konsole ein anderer DC ist als ein normales Window, zumindest seit WinNT.

Zitat

In Mathe machen wir derzeit Kurvendiskussion und dafür könnte ich dann ein Programm erstellen, welches Sachen berechnet und gleich den Graphen zeichnen kann.

ASCII-Art :-)

Zitat

Woher soll diese implizite Null kommen?

C++ Language Extension :: C++ Exceptions. Wenn immer eine Funktion ohne return abbricht, kommt ein ausgenullter Datentyp zurück. Sache des Compilers.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#18 _return_0_

  • Gruppe: Gäste

geschrieben 13. November 2004 - 13:47

void main() ist nicht standartkonform.

Ich schätze mal dass Bjarne Stroustrup in dem FAQ alles klärt.

Schau einfach mal selbst: Can I Write void main()?

Zitat

The definition
void main() { /* ... */ }

is not and never has been C++, nor has it even been C. See the ISO C++ standard 3.6.1[2] or the ISO C standard 5.1.2.2.1. A conforming implementation accepts


Ich bin mal gespannt was du dazu sagst...
0

#19 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.505
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 13. November 2004 - 14:08

Lies den Standard doch mal selber, dann würdest du merken daß es standardkonform ist, auch auf Maschinen wo ein return-Value erwartet wird. void auf einer als int deklarierten Funktion liefert 0 zurück, das ist expliziter Teil der Spezifikation von C++98 und C99.

Zitat

Note also that neither ISO C++ nor C99 allows you to leave the type out of a declaration.

Doch, genau das macht C99 explizit als Erweiterung gültig.

Zitat

main() { /* ... */ }

is an error because the return type of main() is missing.

Klar ist main() ein Fehler, aber void main() ist nicht main() und auch deshalb nicht falsch.

Naja, diese FAQ erzählt noch mehr Unsinn:

Zitat

Operator . (dot) could in principle be overloaded using the same technique as used for ->. However, doing so can lead to questions about whether an operation is meant for the object overloading . or an object referred to by .

Nein, das Überladen von dot ist eindeutig.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#20 _return_0_

  • Gruppe: Gäste

  geschrieben 13. November 2004 - 14:54

Ja wahrscheinlich weißt du alles besser ;D ;D :P

Zitat

1....The definition
void main() { /* ... */ }

is not and never has been C++, nor has it even been C... ;D

2....On systems that doesn't provide such a facility the return value is ignored, but that doesn't make "void main()" legal C++ or legal C...

3....Note also that neither ISO C++ nor C99 allows you to leave the type out of a declaration. That is, in contrast to C89 and ARM C++ ,"int" is not assumed where a type is missing in a declaration. Consequently:
#include<iostream>

main() { /* ... */ }

is an error because the return type of main() is missing. ...


1. void main() ist und war niemals C++ oder C.
2.Auf Systemen bei denen das Weglassen des "return 0" ignoriert wird, wird void main() nicht zu legalem C++.
3. Man beachte dass weder ISO C++ noch C99 es erlauben den Rückgabetyp wegzulassen.
0

#21 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.505
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 13. November 2004 - 15:11

1. Du kannst es so oft wiederholen wie du willst, dadurch wird es nicht weniger flasch...
2. Das hat damit auch gar nix zu tun. void main() ist insbesondere nur dort gültig, wo es einen return-Typ gibt.
3. Bei void main() wird doch der Rückgabe-Typ nicht weggelassen, "void main()" ist etwas anders als "main()".

Jetzt tu mir einfach mal den Gefallen und lies dir den C99-Standard nochmal ganz genau durch und sage mir was "Language Extension" bedeutet...
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#22 Mitglied ist offline   markus_83_nrw 

  • Gruppe: aktive Mitglieder
  • Beiträge: 614
  • Beigetreten: 21. Juli 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bonn

geschrieben 19. November 2004 - 08:40

programmiere doch sowas wie ein spiel: mühle, schach, usw. nur für 2 player gedacht.

die abfrage wo welcher stein hinspringen darf ist schon schwer genug.

ich habe zum beispiel mal mühle im schulproject programmiert das war ne sau arbeit.
vorallem das drei dimensionale array auswerten zulassen, ob jetzt ne mühle neu war oder schon beim letzten zug vorhanden war.

gruß Markus

Dieser Beitrag wurde von markus_83_nrw bearbeitet: 19. November 2004 - 08:48

Rechtschreibfehler dienen der Belustigung der Leser :D :D
--------------------
Tower: Chieftec - "Medium Tower" der Dragon Serie Blau
CPU: 3.2 GHz AEP bei IDEL 35°-36° bei VOLLLAST ~ 45° (Windows Vista Index: 4,3)
Speicher: 2 GB MDT RAM (4*512 MB RAM PC3200) (Windows Vista Index: 4,5)
GraKa: GeCube ATI Radeon X1950 Pro @ Standard: 575/1380 (Windows Vista Index: 5,9)
HDDs: 80GB Seagate SATA 7200 Umin + 30GB Maxtor PATA (Windows Vista Index: 4,9)
Mainboard: Gigabyte 4P Titan; Chipsatz 865PE
Sound: Sound Blaster Audigy 2 ZS
OS: Windows Vista Ultimate - vLite Edition :D
Breitband: 3PLAY (ISH) 6000 MBit / pings bei ~40
0

#23 Mitglied ist offline   Matze 

  • Gruppe: aktive Mitglieder
  • Beiträge: 663
  • Beigetreten: 29. Februar 04
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 06. Dezember 2004 - 19:54

Falls es einen Interessiert:
Ich habe mich jetzt endlich entschieden und werde 'Schiffe versenken' programmieren. Nicht sonderlich schwer und zu 99% auch schon fertig aber irgendwas müssen wir ja machen.

Danke nochmal für die Vorschläge. :wink:
Lorem ipsum dolor sit amet, consetetur sadipscing elitr.
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0