1. ホーム
  2. c++

[解決済み] C++で式を書くときに中括弧で囲む構文ってなんだ?

2023-08-30 12:20:17

質問

この奇妙なC++プログラムに出会いました。

#include <iostream>
using namespace std;
int main()
{
  int a = ({int x; cin >> x; x;});
  cout << a;
}

どなたか説明していただけませんか?この構成は何と呼ばれているのでしょうか?

どのように解決するのですか?

ユーザが入力した値を a に代入し、それを出力します。 Statement Expression .

ステートメント式は gnu gcc コンパイラ拡張 であり、C/C++の標準ではサポートされていません。したがって、ステートメント式を使用するコードはすべて標準に準拠しておらず、移植不可能です。

IBM XL C/C++ v7.0 もステートメント式 & をサポートしており、そのドキュメントはそれらを適切に説明しています。

ステートメント式。

<ブロッククオート

複合ステートメントとは、中括弧で囲まれた一連のステートメントのことです。GNU Cでは、括弧で囲まれた複合文は、式として Statement expression .

         .--------------.
         V              |
>>-(--{----statement--;-+--}--)--------------------------------><

<ブロッククオート

ステートメント式の値は、構成全体の中で最後に現れる単純な式の値です。最後のステートメントが式でない場合、構成はvoid型であり、値を持ちません。

常にGCCで標準を選択してコードをコンパイルしてください:オプションの1つを使用してください。 -ansi , -std=c90 または -std=iso9899:1990 , -std=c++03 , -std=c++0x 規格が要求するすべての診断を得るためには、さらに -pedantic (または -pedantic-errors 警告ではなく、エラーにしたい場合)。