http://www.testyourabilities.com/it/ Matthias
Echt krass! Da wird einem ja Angst und Bange, da werden Fragen gestellt, die man im echten Leben nie treffen sollte, wenn gefälligst die unmöglichsten, aber leider technisch möglichen Konstrukte weggelassen werden würden ;-) (c++)
Gibt's einen Weg, mit dem mehr als der Wert "93%" rauskommt? Wär schon schon, zu wissen, was man falsch gemacht hat.
Apropos falsch: Kann mir jemand C++ Frage 11 erklären? Vielleicht habe ich ja was verpasst, aber mein letztere Stand ist, dass Klammern kein "sequence point" sind, folglich 2 Ergebnisse möglich sind.
@Thomas Kennst du aus der boost Bibliothek z.B. das spirit parser framework? (www.boost.org) Da ist der C++ Test doch ziemlich harmlos ;-)
> Kann mir jemand C++ Frage 11 erklären?
Wie war denn Frage 11?
Hab's grad nochmal probiert, aber da tauchen anscheinend
bei jedem Durchlauf andere Fragen auf.
Du hast aber auf jeden Fall Recht: Klammern sind
keine Sequence Points (sofern es sich nicht um
die Klammern um die Argumentliste eines Funktions-
aufrufes handelt).
Ok, nach der 2ten Frage isch hier Schluss... Assembler ist da viel einfacher.
Frage 11 anbei - sind bei mir auch im 3. Durchlauf immer noch die gleichen Fragen.
Würde ich auch sagen: Undefiniertes Verhalten, weil ein sequence point fehlt.
Hi Wo seht ihr da zusätzlichen Bedarf an einem sequence point? Das Verhalten ist IMHO absolut definiert und a = 1. Matthias
81% bei C. Aber der Test ist schwer... Ich hatte aber meiner Meinung nach einen Fehler im Test. Da wurde nach der Anweisung für ein 'logical or' gefragt, aber die Auswahl || gab es nicht, nur or, |, ^, & und nochwas sinnloses. Oder habe ich da irgendwas verpasst?
Hi kam bei mir auch. Allerdings war die Frage welches char man verwendet für ein logical or. Und da ist | durchaus richtig. Man braucht halt zwei davon. Matthias
Oh, ok. So um die Ecke gedacht habe ich dann nicht. Aber hatte natürlich trotzdem | genommen, da der Rest sinnlos war. C++ jetzt auch 80%, obwohl ich dachte, dass mehr falsch ist. Zu Frage 11: Wird das b++ erst nach dem gesamten Ausdruck ausgeführt?
Hi b++ erhöht b zum nächsten sequence point um eins und liefert b zurück. --c verringert c zum nächsten sequence point um eins und liefert c-1 zurück. Matthias
@Matthias: Nach dieser These wäre char *p; int a = *p++ - *p++; definiert als äquivalent zu char *p; int a = *p - *p; p += 2; Stimmt so aber nicht. Der Spruch geht anders: "b++ erhöht b spätestens zum nächsten sequence point um eins". Oder irgendwann vorher.
@Matthias Das Verhalten ist undefiniert. Du darfst eine Variable in einem Ausdruck nur entweder * immer lesen * oder nur einmal veraendern. In dem Fall muss die Veraenderung aber die einzige Aktion sein, die auf die Variable ausgefuehrt wird. In C++ - speak lautet das so: 5 Expressions 5.4 Except where noted, the order of ... Between the previous and next sequence point a scalar object shall have its stored value modified at most once by the evaluation of an expression. Furthermore, the prior value shall be accessed only to determine the value to be stored.
Ups, nur 96% bei C geschafft. Schade, dass keine Auswertung kommt damit ich sehen könnte, wo ich mich verklickt habe...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.