C99增加了一个新特性,可以使用方括号指明需要特别初始化的元素,在初始化一个元素之后,未初始化的元素一般都为零。
#include<stdio.h>
int main()
{
int arr[6] = {[5] = 12};//特别指定a[5] = 12;
for(int i = 0;i <6; i++)
printf("%d ",arr[i]);
}
在C语言中,该程序可以正常执行,输出:
[Running] cd "d:\程序\随笔程序\2020年1月\" && gcc zhiding初始化器.c -o zhiding初始化器 && "d:\程序\随笔程序\2020年1月\"zhiding初始化器
0 0 0 0 0 12
[Done] exited with code=0 in 0.93 seconds
但是C++中不支持这样的语法,第一次发现有C++不支持的C语法。
#include<iostream>
using namespace std;
int main()
{
int arr[6] = {[5] = 12};
for(int i = 0;i <6; i++)
cout << arr[i] << " ";
}
报错:
cd "d:\程序\随笔程序\2020年1月\" && g++ designatedinitializer.cpp -o designatedinitializer && "d:\程序\随笔程序\2020年1月\"designatedinitializer
designatedinitializer.cpp: In function 'int main()':
designatedinitializer.cpp:5:27: sorry, unimplemented: non-trivial designated initializers not supported
int arr[6] = {[5] = 12};
^
[Done] exited with code=1 in 0.738 seconds