#include <stdio.h>
int main() {
int x = ({int a = 2; a;});
printf("%d\n", x);
}
出力:
#include <stdio.h>
int main() {
int x = ({int a = 2; a;});
printf("%d\n", x);
}
出力:
GCCが提供するC/C++言語の標準ではない拡張子で、statement expressionsです。 -pedantic
フラグを指定してコンパイルしようとすると、「ISO Cは式内のブレースされたグループを禁止します」という警告が表示されます。可能であれば、でなく、の移植コードなので、避けてください。
それは 'A' と呼ばれるローカル変数を宣言し、それに値を代入 '2' をaの値をxに代入します。
({ ... })
構文は、言語のGCC拡張です。ブロック内の最後のステートメントの値を評価するブロック式と考えることができます。
私はここアダムです。それを使用しないでください。あなたはそれがどんな種類のパフォーマンスを提供しているのか分かりません。ポータブルではないことを知っていますし、ちょっと変わって断続的に読みにくいことがわかりました。 –
プログラミングコンテストのソリューションで使用しました。 – Shrey