Der C11-Standard scheint zu implizieren, dass Iterationsanweisungen mit konstanten Steuerausdrücken nicht optimiert werden sollten. Ich nehme meinen Rat von dieser Antwort , in der Abschnitt 6.8.5 des Standardentwurfs ausdrücklich zitiert wird: Eine Iterationsanweisung, deren steuernder Ausdruck kein konstanter Ausdruck ist, kann von der Implementierung als beendet angenommen werden. In dieser …
Ich hatte den Eindruck, dass der Zugriff auf ein unionanderes Mitglied als den letzten Satz UB ist, aber ich kann anscheinend keine solide Referenz finden (außer Antworten, die behaupten, es sei UB, aber ohne Unterstützung durch den Standard). Ist es also undefiniertes Verhalten?
Aus irgendeinem Grund habe ich mich in die .NET Framework-Quelle für die Klasse geschlichen Doubleund festgestellt, dass die Deklaration von ==: public static bool operator ==(Double left, Double right) { return left == right; } Die gleiche Logik gilt für jeden Bediener. Was ist der Sinn einer solchen Definition? Wie …
vector<int> v; v.push_back(1); v.push_back(v[0]); Wenn der zweite push_back eine Neuzuweisung verursacht, ist der Verweis auf die erste Ganzzahl im Vektor nicht mehr gültig. Das ist also nicht sicher? vector<int> v; v.push_back(1); v.reserve(v.size() + 1); v.push_back(v[0]); Das macht es sicher?
auto foo = "You're using g++!"; auto compiler_detector = [foo](auto foo) { std::puts(foo); }; compiler_detector("You're using clang++!"); clang ++ 3.6.0 und neuerer Ausdruck "Sie verwenden clang ++!" und warnen Sie davor, dass die Aufnahme foo nicht verwendet wird. g ++ 4.9.0 und neuerer Ausdruck "Sie verwenden g ++!" und warnen, …
Betrachten Sie dieses ziemlich nutzlose Programm: #include <iostream> int main(int argc, char* argv[]) { int a = 5; auto it = [&](auto self) { return [&](auto b) { std::cout << (a + b) << std::endl; return self(self); }; }; it(it)(4)(6)(42)(77)(999); } Grundsätzlich versuchen wir, ein Lambda herzustellen, das sich selbst …
Ich lerne gerade C ++ mit dem Buch C ++ Primer und eine der Übungen im Buch ist: Erklären Sie, was der folgende Ausdruck bewirkt: someValue ? ++x, ++y : --x, --y Was wissen wir? Wir wissen, dass der ternäre Operator eine höhere Priorität hat als der Kommaoperator. Mit binären …
Ich habe eine Situation, in der ich möchte, dass zwei Fälle in einer C ++ - switch-Anweisung beide zu einem dritten Fall durchfallen. Insbesondere würde der zweite Fall bis zum dritten Fall durchfallen , und der erste Fall würde auch bis zum dritten Fall durchfallen, ohne den zweiten Fall zu …
Als interessante Folge (allerdings nicht von großer praktischer Bedeutung) zu meiner vorherigen Frage: Warum erlaubt C ++ uns, den Variablennamen beim Deklarieren einer Variablen in Klammern zu setzen? Ich fand heraus, dass das Kombinieren der Deklaration in Klammern mit der Funktion für injizierte Klassennamen zu überraschenden Ergebnissen hinsichtlich des Compilerverhaltens …
Kann jemand eine klare Definition zusammen mit einem einfachen Beispiel geben, das erklärt, was eine "Rückrufhölle" für jemanden ist, der JavaScript und node.js nicht kennt? Wann (in welchen Einstellungen) tritt das "Callback Hell Problem" auf? Warum kommt es vor? Bezieht sich "Rückrufhölle" immer auf asynchrone Berechnungen? Oder kann "Callback Hell" …
C ist etwas, nicht genau, eine Teilmenge von C ++. Daher können wir die meisten C-Funktionen / Header in C ++ verwenden, indem wir den Namen ein wenig ändern ( stdio.hto cstdio, stdlib.hto cstdlib). Meine Frage ist eigentlich eine Art Semantik. In C ++ Code (unter Verwendung der neuesten Version …
Eine etwas seltsame Frage: Wenn ich mich richtig erinnere, benötigt der C ++ - Quellcode kein Dateisystem, um seine Dateien zu speichern. Ein Compiler, der handgeschriebene Papiere über eine Kamera scannt, wäre eine konforme Implementierung. Obwohl praktisch nicht so viel Sinn macht. C ++ 20 fügt jetzt jedoch den Quellspeicherort …
Bisher dachte ich, dass effektiv final und final mehr oder weniger gleichwertig sind und dass die JLS sie ähnlich behandeln würde, wenn nicht identisch im tatsächlichen Verhalten. Dann fand ich dieses erfundene Szenario: final int a = 97; System.out.println(true ? a : 'c'); // outputs a // versus int a …
(Ich suche ein oder zwei Beispiele, um den Punkt zu beweisen, keine Liste.) War es jemals so, dass eine Änderung des C ++ - Standards (z. B. von 98 auf 11, 11 auf 14 usw.) das Verhalten des vorhandenen, wohlgeformten Benutzercodes mit definiertem Verhalten im Stillen veränderte? dh ohne Warnung …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.