2016-03-19 2 views
1

Mein Buch definiert einen Ausdruck als "eine Programmieranweisung, die einen Wert hat" und ein Literal als "ein Stück Daten, die direkt in den Quellcode eines Programms geschrieben werden", aber ich habe immer noch Schwierigkeiten, zwischen den beiden zu unterscheiden. Zum Beispiel, ist 3 + 3 ein Literal UND ein Ausdruck oder nur ein Ausdruck? Warum?Worin besteht in C++ der Unterschied zwischen einem Ausdruck und einem Literal?

int number = 2+2; 

Ist diese ganze Aussage ein Ausdruck oder genau der richtige Wert? Warum? Diese ganze Aussage hat einen Wert von 4, also ist die ganze Aussage sicherlich ein Ausdruck?

Meiner Meinung nach beinhaltet ein Ausdruck normalerweise Operatoren und ein Literal beinhaltet ein einzelnes Stück von Daten wie 4, "Hallo", "A" usw. Ich verstehe auch, dass ein Literal ein Ausdruck sein kann wegen unärer Operatoren wie als - oder +. Habe ich recht, wenn ich das denke?

+2

http://en.cppreference.com/w/cpp/language/expressions#Literals – user657267

+0

Nein. Eine Aussage ** ist nicht ** ein Ausdruck. Bemerkenswerterweise gibt es eine Trennung zwischen lvalues ​​und rvalues ​​in C++, wie sie durch die Verwendung von rvalue-Referenzen, wie in C++ 11 eingeführt, beleuchtet werden. – VermillionAzure

+0

Die Definitionen sind im Fall von C++ beide falsch. Erzähl uns das Buch, damit wir es vermeiden können. – EJP

Antwort

0

Ein Literal ist so etwas wie die Nummer 7 zum Beispiel. Bei der Montage-Code umgewandelt, bleibt die wörtliche 7 gut sichtbar im Code:

MOV R1, 7 ; move the number 7 as a value into register R1 

Ein Ausdruck ist etwas, das ausgewertet werden muss. Im Allgemeinen finden Sie etwas in der Art von C=A+B;, wobei A+B ein Ausdruck ist.

Ein Ausdruck ist eine Folge von Operatoren und deren Operanden, die eine Berechnung angibt. Die Ausdrucksauswertung kann ein Ergebnis ergeben (z. B. Auswertung von 2 + 2 ergibt das Ergebnis 4) und kann Nebeneffekte erzeugen (zB Auswertung von std :: printf ("% d", 4) druckt das Zeichen '4' auf der Standardausgabe).

http://en.cppreference.com/w/cpp/language/expressions http://en.cppreference.com/w/cpp/language/expressions#Literals

+0

Ich denke, diese Antwort könnte viel hilfreicher sein, wenn Sie sich die Zeit nehmen würden, sie zu bearbeiten und zu aktualisieren. –

1

Ein Ausdruck ist eine Folge von Operatoren und Operanden, die eine Berechnung angibt. Ein Ausdruck kann zu einem Wert führen und Nebenwirkungen verursachen.

Ein Literal ist eine der folgenden:

  • Ganzzahlliteral
  • Zeichenliteral
  • Gleitkomma literal
  • Stringliteral
  • boolean literal
  • pointer literal

Ich werde nicht versuchen, die formale Definition von jedem von diesen zu geben, aber jeder ist im Grunde nur ein Wert.

Es gibt eine weitere Art von wörtlichen das ist etwas besonderes aber:

  • benutzerdefinierte wörtliche

Obwohl benutzerdefinierte Literale Literale sind, wird der Wert des Literals in Bezug auf die definiert ist Ergebnis der Auswertung eines Ausdrucks.

Referenzen:

Expressions: [ausdr]
Literale: [lex.literal]

(Denn es diejenigen, die nicht mit, ist der Tag in eckigen Klammern die Schreibweise verwendet Abschnitte in der C++ zu spezifizieren Standard).

Verwandte Themen