整数类型变量的奇数C/C++初始化语法

Som*_*ame 5 c c++ compilation

以下代码片段与C/C++编译器完美编译:

#include <stdio.h>
int main()
{
    int x = {5};         //<-- why this compiles?
    printf("x = %d",x);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是5. x这里以复合形式初始化,尽管它是整数类型.我想了解这里的转换以及原因.

oua*_*uah 8

C允许它:

(C99,6.7.8p11)"标量的初始值设定项应为单个表达式,可选择用括号括起来."

C++在C++ 11,8.5.4p1中有类似的规则