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

0
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 .-

1
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ß).

1
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 !

0
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.

1

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