Anzeige:
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 16 bis 30 von 35

Thema: Newbie mit ersten C++ Problemen

  1. #16
    Registrierter Benutzer
    Registriert seit
    06.01.2006
    Beiträge
    37

    re

    Da bin ich schon wieder,
    hab michg mal weiter durch http://www.cpp-entwicklung.de/cpplin...ain/node4.html
    und
    http://www.lcs-chemie.de/c_comp.htm
    gearbeitet, aber bei den Quelltexten die dort abgebildet sind bekomme ich immer fehlermeldungen!

    So z.b. bei
    #include <iostream>
    using namespace std;

    void main( void )
    {
    char name[50 ];
    cout << "Wie ist Dein Name ?: " ;
    cin >> name;
    cout << "Hallo, " << name << endl;
    }

    kommt das:
    operatorTest.cpp:4: error: ‘::main’ must return ‘int’
    Suse 10.2 64
    Intel Quad Core
    4Gbyte Ram
    Geforce8

  2. #17
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Die main-Funktion muss "int main(void)" heißen und damit muss am Ende noch ein "return 0;" eingefügt werden.
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  3. #18
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Schmeiss das Tut weg! Bei mir auf der Homepage (www.walfisch.ch.vu) hat es im Bereich "Bücher und Tuts" --> Verschiedene Sprachen viel bessere!

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  4. #19
    Registrierter Benutzer
    Registriert seit
    06.01.2006
    Beiträge
    37

    Neues Problem

    Was ist hier falsch?
    cout << x = (0 ``null'' : ``ungleich 0'');

    Bekomme folgenden Fehler:
    aufgabe5.cpp:1: error: stray '`' in program
    aufgabe5.cpp:1: error: stray '`' in program
    aufgabe5.cpp:1:23: error: empty character constant
    aufgabe5.cpp:1: error: stray '`' in program
    aufgabe5.cpp:1: error: stray '`' in program
    aufgabe5.cpp:1:40: error: empty character constant
    aufgabe5.cpp:1: error: expected constructor, destructor, or type conversion before '<<' token
    Suse 10.2 64
    Intel Quad Core
    4Gbyte Ram
    Geforce8

  5. #20
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Was soll diese Zeile machen?
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  6. #21
    Registrierter Benutzer
    Registriert seit
    06.01.2006
    Beiträge
    37

    re

    Zitat Zitat von bischi
    Schmeiss das Tut weg! Bei mir auf der Homepage (www.walfisch.ch.vu) hat es im Bereich "Bücher und Tuts" --> Verschiedene Sprachen viel bessere!

    MfG Bischi
    Das werd ich auf jeden fall Testen, denn das Momentane tut nervt, da da ja kaum en Quelltext funzt und wie soll man sich dann da als einsteiger zurecht finden!?
    Suse 10.2 64
    Intel Quad Core
    4Gbyte Ram
    Geforce8

  7. #22
    Registrierter Benutzer
    Registriert seit
    06.01.2006
    Beiträge
    37

    re

    Zitat Zitat von Caveman
    Was soll diese Zeile machen?
    Für eine Variable x soll ausgegeben werden, ob sie 0 ist oder nicht. Was ist hier falsch?

    So stehts im Tut
    Suse 10.2 64
    Intel Quad Core
    4Gbyte Ram
    Geforce8

  8. #23
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Code:
    if (!x)
      cout << "x ist 0\n";
    else
      cout << "x ist nicht 0\n";
    So würde es gehen. Als Einzeiler würde es auch mit dem ?-Operator gehen, doch den benutze ich zu selten, als dass ich den schnell aus dem Kopf hinschreiben kann.

    Mit deiner Zeile kann ich leider gar nichts anfangen.
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  9. #24
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Was wahrscheinlich gemeint war:
    Code:
    cout << x==0?"gleich 0":"ungleich 0"
    Das ist aber C-Programmierstil.

    Hau das Tutorial in die Tonne! Allein das "functionsname(void)" zeugt von mangelnder C++-Kenntnis. (In C heißt "returntype funktionsname()" dass die Funktion Parameter nimmt oder auch nicht, deshalb musste man dort (void) schreiben, um anzugeben, dass keine Parameter erwartet werden. Bei C++ bedeutet bereits funktionsname(), dass die Funktion keine Parameter bekommt.

  10. #25
    Registrierter Benutzer
    Registriert seit
    20.11.2004
    Beiträge
    122
    Zitat Zitat von bischi
    Wieso weisst du, welches in diesem Fall das richtige ist? Das ist überhaupt nicht klar - da du nicht genau weisst, was er machen will! ++i heisst: Erhöhe i um eins und mache dann den Rest der Anweisung. i++ heisst: Mache zuerst die Anweisung und erhöhe i danach um eins.
    MfG Bischi
    Das ist nicht ganz richtig. In einer Schleife spielt das (mit der Reihenfolge) soweit ich weiß keine Rolle.
    Geändert von `kk (10-01-2006 um 15:17 Uhr)

  11. #26
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Es spielt eine Rolle, wenn auch nur vom Performancestandpunkt her.
    Allerdings auch nur, wenn du ++ auf etwas anderes als Integers machst.
    Wenn der postfix ++ als "{TYPE tmp = this; ++this; return tmp}" implementiert ist, und die Zuweisung eine teure Operation ist, dann ist das verschwendete Rechenzeit, welches bei 1.000.000 Schleifendurchläufen schon etwas ausmachen kann.

    Wie aber schon geschrieben, ist es in 99% der Fälle vollkommen egal, ob man ++i oder i++ schreibt.

  12. #27
    Registrierter Benutzer
    Registriert seit
    20.11.2004
    Beiträge
    122
    Danke fuer die Ergaenzung.. bitte Klammerinhalte mitlesen.
    Ich wollte es jetzt nicht noch fett machen oder anderweitig vorheben...

    Wie aber schon geschrieben, ist es in 99% der Fälle vollkommen egal, ob man ++i oder i++ schreibt.
    Also inkrementierst du nur in 1% der Faelle eine Klasse ueber einen ueberladenen Operator?
    Gut. Trotzdem kann man den Overhead durch staendiges verwenden von Praefix von vornherein ausschließen
    und muss nicht schauen, was foo nun gerade ist.

    Ich machs lieber so...
    Geändert von `kk (11-01-2006 um 12:59 Uhr)

  13. #28
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Zitat Zitat von `kk
    Trotzdem kann man den Overhead durch staendiges verwenden von Praefix von vornherein ausschließen
    und muss nicht schauen, was foo nun gerade ist.
    Genau das war mein Punkt.

  14. #29
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Aber Präfix ist hässlich. Da kann Stroustroup die Postfix-Notation noch so lange mit awkward und was auch immer betiteln wie er will

    (Und ja, ich führe eine sinnlose Diskussion weiter )

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  15. #30
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    templates sind auch hässlich, trotzdem ist es praktisch, sie zu nutzen

    Ich nutze übrigens bei integers auch immer postfix, da "++i" wirklich behämmert aussieht, aber nicht jede Sprache kann eine schöne Syntax haben, mir reicht Python (wenngleich dort die "@decorator"-Syntax extrem hässlich ist)

Lesezeichen

Berechtigungen

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