3 Stimmen

Tippfehler auf der msdn-Seite "C++ Konstante Ausdrücke"?

Dort heißt es unter msdn seite für c++ konstante ausdrücke das:

Nicht-ganzzahlige Konstanten müssen sein umgewandelt werden (entweder explizit oder implizit) in ganzzahlige Typen konvertiert werden, damit sie in einem konstanten Ausdruck zulässig zu sein. Daher ist der folgende Code legal:

const double Size = 11.0;
char chArray[(int)Size];

Zumindest bei VC++ 10.0 erzeugt die zweite Zeile: "Fehler C2057: erwarteter konstanter Ausdruck". Ist sie also auf einem anderen Compiler legal oder ist die msdn-Seite einfach falsch?

6voto

icecrime Punkte 70619

Nach 5.19/1 :

Eine ganzzahliger konstanter Ausdruck kann nur Literale umfassen (2.13), Aufzählungszeichen, const Variablen oder statische Datenelemente eines Integrals oder Aufzählungstypen initialisiert mit konstanten Ausdrücken (8.5), Nicht-Typ Schablonenparameter eines Integrals oder Aufzählungstypen, und sizeof Ausdrücke. Fließkomma-Literale (2.13.3) können nur erscheinen, wenn sie in Integral- oder Aufzählungstypen Typen .

Nach meinem Verständnis ist der Code ungültig, während der folgende legal ist:

char chArray[(int)11.0];

3voto

Das ist nach dem Standard C++ nicht zulässig. Siehe 5.19/2 für die Regeln in der Spezifikation.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X