1. ホーム
  2. c

[解決済み] なぜ(そしていつ)sizeofの後に括弧を使用する必要があるのですか?

2023-06-06 03:46:58

質問

以下はコンパイルに失敗します。

typedef int arr[10];
int main(void) {
    return sizeof arr;
}

sizeof.c:3: error: expected expression before ‘arr’

となっていますが、これを

sizeof(arr);

はすべてうまくいっています。なぜですか?

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

6.5.3では sizeof には以下のような2つの形式があります。

sizeof unary-expression
sizeof ( type-name )

以降 arr は、あなたのコードでは type-name であるため、括弧でくくらなければなりません。