Mögliche Duplizieren:
Return value from local scope?Wie funktioniert dieser Code?
#include <stdio.h>
int main() {
int x = ({int a = 2; a;});
printf("%d\n", x);
}
Ausgang:
Mögliche Duplizieren:
Return value from local scope?Wie funktioniert dieser Code?
#include <stdio.h>
int main() {
int x = ({int a = 2; a;});
printf("%d\n", x);
}
Ausgang:
Es ist eine nicht-standard Erweiterung zu den C/C++ - Sprachen, die von GCC statement expressions genannt werden. Wenn Sie versuchen, mit dem Flag -pedantic
zu kompilieren, erhalten Sie die Warnung "ISO C verbietet abgestufte Gruppen in Ausdrücken". Es ist nicht tragbaren Code und sollte möglichst vermieden werden.
Es deklariert eine lokale Variable 'a' genannt wird, weist ihm den Wert '2' dann Weist x einen Wert zu.
Die ({ ... })
Syntax ist eine GCC-Erweiterung der Sprache. Stellen Sie sich einen blockartigen Ausdruck vor, der den Wert der letzten Anweisung im Block auswertet.
Ich bin mit Adam hier. Benutze es nicht. Sie haben keine Ahnung, welche Art von Leistung es bieten könnte, Sie wissen, dass es nicht tragbar ist, und Sie haben gerade entdeckt, dass es seltsam und zeitweise unleserlich ist. –
Sah es in einer Lösung in einem Programmierwettbewerb verwendet. – Shrey