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); }; };
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); }; };
Betrachten Sie den folgenden Code: #include <iostream> struct foo { // (a): void bar() { std::cout << "gman was here" << std::endl; } // (b): void baz() { x = 5; } int x; }; int main() { foo* f = 0; f->bar(); // (a) f->baz(); // (b) } Wir erwarten (b)einen...
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 Operatoren war das...
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...
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"...
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...
(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...
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 //...
Wenn Sie in der Sprache C ein Array wie folgt initialisieren: int a[5] = {1,2}; dann werden alle Elemente des Arrays, die nicht explizit initialisiert wurden, implizit mit Nullen initialisiert. Aber wenn ich ein Array wie dieses initialisiere: int a[5]={a[2]=1}; printf("%d %d %d %d %d\n",...
Ist dieser Code gültig (und definiertes Verhalten)? int &nullReference = *(int*)0; Sowohl g ++ und Klirren ++ kompilieren , ohne jede Vorwarnung, auch bei der Verwendung von -Wall, -Wextra, -std=c++98, -pedantic, -Weffc++... Natürlich ist die Referenz nicht wirklich null, da nicht auf sie...
Ich bin neu in C ++. Ich sehe oft bedingte Aussagen wie folgt: if statement_0; else if statement_1; Frage: Soll ich syntaktischelse if als ein einzelnes Schlüsselwort behandeln? Oder ist es tatsächlich eine verschachtelte ifAnweisung innerhalb des Äußeren elsewie unten? if...
Betrachten Sie folgendes Programm: #include <iostream> int main = ( std::cout << "C++ is excellent!\n", 195 ); Unter Verwendung von g ++ 4.8.1 (mingw64) unter Windows 7 kompiliert das Programm und läuft einwandfrei. Es druckt: C ++ ist ausgezeichnet! zur Konsole. mainscheint eher eine...
In Bjarne Stroustrups The C ++ Programming Language 4. Ausgabe, Abschnitt 36.3.6 STL-ähnliche Operationen, wird der folgende Code als Beispiel für die Verkettung verwendet : void f2() { std::string s = "but I have heard it works even if you don't believe in it" ; s.replace(0, 4, "" ).replace(...
Ist es undefiniertes Verhalten, Nullzeiger mit dem %pKonvertierungsspezifizierer zu drucken ? #include <stdio.h> int main(void) { void *p = NULL; printf("%p", p); return 0; } Die Frage bezieht sich auf den C-Standard und nicht auf
Ich habe gerade gesehen, wie Stephan T. Lavavej CppCon 2018über "Class Template Argument Deduction" sprach , wo er irgendwann übrigens sagt: In C ++ fließen Informationen fast nie rückwärts ... Ich musste "fast" sagen, weil es ein oder zwei Fälle gibt, möglicherweise mehr, aber nur sehr wenige ....
Klammern in C ++ werden an vielen Stellen verwendet: z. B. in Funktionsaufrufen und Gruppierungsausdrücken, um die Priorität von Operatoren zu überschreiben. Abgesehen von illegalen zusätzlichen Klammern (wie z. B. Argumentlisten für Funktionsaufrufe) ist eine allgemeine, aber nicht absolute Regel...
https://godbolt.org/z/cyBiWY Ich kann zwei 'some'Literale im Assembler-Code sehen, der von MSVC generiert wurde, aber nur eines mit clang und gcc. Dies führt zu völlig unterschiedlichen Ergebnissen der Codeausführung. static const char *A = "some"; static const char *B = "some"; void f() { if (A ==...
Stellen wir uns vor, wir haben eine Struktur für 3 Doubles mit einigen Mitgliedsfunktionen: struct Vector { double x, y, z; // ... Vector &negate() { x = -x; y = -y; z = -z; return *this; } Vector &normalize() { double s = 1./sqrt(x*x+y*y+z*z); x *= s; y *= s; z *= s; return...