Warum gilt in C++ int a {}; nur als Deklaration / Definition?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
int a {}; nur als Deklariert und Definiert

wer sagt das den ? das keine zero-initialiserung erfolgt.

durch die Uniform Initialization seit 2011 ist es eine zero-initialization und sollte auch inzwischen bei allen compilern eingebaut worden sein .

https://en.cppreference.com/w/cpp/language/value_initialization

int n{};   // scalar => zero-initialization, the value is 0

selbst bei struct ist es so

// No constructor
struct TempData
{
    int StationId;
    time_t timeSet;
    double current;
    double maxTemp;
    double minTemp;
};
int main()
{
  // Default initialization = {0,0,0,0,0}
  TempData td_default{};
}

https://docs.microsoft.com/en-us/cpp/cpp/initializing-classes-and-structs-without-constructors-cpp?view=msvc-170

und hier wann eine initialisierung statt findet

https://en.cppreference.com/w/cpp/language/value_initialization

int a {14}; => EIne Definition und Initialisierung mit einem bestimmten wert


Valentin1720653 
Beitragsersteller
 18.02.2022, 13:16

Das ist sehr gut zu wissen, da das eine Frage in der Probeklausur war. Dort hieß es:

int a {};

Was würde mit dieser variable gemacht ? Die richtige Antwort war deklariert und definiert, aber nicht initialisiert....

Ich werde Mal eine Frage im Forum Posten

TechPech1984  18.02.2022, 13:19
@Valentin1720653

da hat dein Lehrer eine veraltete klausur , passierst ständig sogar bei der IHK , die schreiben nur ab was in den damaligen klausuren vor kam .

fakt ist, seit 2011 ist es eine zero-initialiserung durch Uniform Initialization

sorry, aber einige dozenten bilden sich nciht weiter, sie sind keine programmierer und machen copy paste . den punkt kann man sich also bei falscher antwort zurück holen .

was glaubste was bei php 5.6 zu php 7.x passiert ... da ist es noch schlimmer, da hat sich soviel verändert das dozenten und lehrer quasi im letzten jahrtausend leben .-

KarlRanseierIII  18.02.2022, 17:21
@TechPech1984

Gemein wäre natürlich,, wenn explizit ein bestimmter Standard verlangt wäre (der nicht aktuell sein muß).

TechPech1984  18.02.2022, 20:17
@KarlRanseierIII

wie sinnvoll ist das denn ;) lernen sie bitte wieder das flache erde model ;) und die zentrische welt anschauung ;) das werden sie bei youtube videos noch sehr offt gebrauchen können ;) code vor 2011 sollte nicht mehr in den wartungslisten auftauchen !

KarlRanseierIII  18.02.2022, 20:21
@TechPech1984

Ach komm, ein bisschen MOS 6502-ASM hat noch keinem geschadet *lach*.

IMHO sind derartige Frage bei sich verändernden Standards in Klausuren eh deplatziert - was soll das bringen. Dann lieber explizit erklären lassen, wo die Unterschiede liegen und den Prüfling ein Beispiel geben lassen.

nun die Variable wird als Integer Zahl definiert aber ihr wird kein Wert zugewiesen