2017-02-03 3 views
0

Nach 5/1 (der Standard):Alle möglichen Ergebnisse eines C++ - Ausdrucks?

ein Ausdruck in einem Wert zur Folge haben kann und die Nebenwirkungen verursachen kann.

So offensichtlich haben wir zwei Möglichkeiten:
1) Expression ergibt einen Wert und Nebenwirkungen verursachen
2) Expression ergibt einen Wert und keine Nebenwirkungen verursachen

Was sind andere mögliche Optionen? (Gibt es zum Beispiel irgendwelche Ausdrücke, die keinen Wert ergeben?)
Ich dachte über throw-Ausdrücke und Funktionen mit void Rückgabetyp. Können wir sie auf die erste oder zweite Kategorie verweisen (Wert void mit möglichen Nebenwirkungen)?

+1

Ein void Ausdruck führt nicht zu einem Wert. – Peter

+1

Sollte in englische Sprache migriert werden (nur scherzhaft)) –

+0

Es ist wahrscheinlich klug, Ausnahmen anders als andere Nebenwirkungen zu behandeln. Insbesondere wenn ein Unterausdruck ausgelöst wird, wird der vollständige Ausdruck nicht ausgewertet. – MSalters

Antwort

6

Was sind die anderen möglichen Optionen?

  1. Expression in einem Wert führt nicht und verursacht Nebenwirkungen
  2. Expression nicht in einem Wert führt und verursacht keine Nebenwirkungen

Ausdrücke mit dem Rückgabetyp void ergeben keinen Wert. Ausdrücke in 4. beeinflussen nicht das Verhalten des Programms.

+0

4 kann beim Debuggen nützlich sein, abhängig von Ihren Tools. Aber sonst, genau richtig. –

+1

@CaptainGiraffe Ich habe den Wortlaut geändert, um Platz zu schaffen. – user2079303

+0

Meinst du, dass die Ausdrücke in 3 und 4 leer sind? – Rodvi

-1

Jeder Aufruf einer Funktion, die void zurückgibt, hat keinen Wert.

Wert von Hohlraumtyp

Es gibt keinen Wert für nichtig.

+1

'printf (" ")' gibt 'int' zurück – moooeeeep

+0

printf Rückgabewert ist int http://www.cplusplus.com/reference/cstdio/printf/" Bei Erfolg wird die Gesamtzahl der geschriebenen Zeichen zurückgegeben. " –

+0

Dies ist wahr, das Beispiel entfernt. – Tom

0

Da exit(0) ein Ausdruck ist, müssen wir die Möglichkeit einschließen, dass die Auswertung eines Ausdrucks das Programm beendet.

Verwandte Themen