请问int a[10]={[3]=3,[5]=5};为什么不行
之前听了小甲鱼的课程,说这样可以给指定数组位置赋值,但是我这样写了并没有,我是用的是Dev-C++ 5.11 是因为编程环境吗,谢谢 #include <stdio.h>int main(){
int a={=3,=5};
int i;
for (i=0;i<10;i++){
printf("%d\n",a);
}
return 0;
} 这种奇葩初始方法我还真没见过,试了试也报错了,但既然C++ Primer Plus 这本超级啰嗦的书都没讲,
可能是小甲鱼的教程有点年代了吧(我也没怎么看,纯属猜测),
就不要管吧,如果看到就改成正确的方式吧 本帖最后由 sunrise085 于 2020-7-22 10:31 编辑
chaoming_c 发表于 2020-7-22 10:01
#include
int main(){
这种写法是C99的新特性,估计你的DEV-C不支持C99。
C99增加了一个新特性:指定初始化器。利用该特性可以初始化指定的数组元素。例如,只初始化数组中的最后一个元素。对于传统的的C初始化语法,必须初始化最有一个元素之前的所有与还俗,才能初始化它:
int arr={0,0,0,0,0,212];//传统的语法
而使用C99的新特性:
int arr={=212};
这样写和上面的结果是一样的,由于前几个元素没有初始化,所以编译器会自动把它们设置为0。
如果指定初始化器后面有更多的值,如:
int arr={=212,3,4};
这个时候arr就初始化3,另外如果再次初始化之前指定的元素,那么最后的初始化将会取代之前的初始化。
如果未指定数组元素的大小的话
如:int arr[]={1,=23,4}
这个时候编译器会把数组的大小设置为足够装得下初始化的值。上面这个数组的长度就是8.
引用自:https://blog.csdn.net/dream_follower/article/details/80298330
可以网上查一下,如何让DEV-C支持C99的特性。
应该是有方法的。
我在网上查了一下好像有,但是没有试验,就不在这里放了,怕出错。你自己查一下试试吧 本帖最后由 liuzhengyuan 于 2020-7-22 11:24 编辑
sunrise085 发表于 2020-7-22 10:30
这种写法是C99的新特性,估计你的DEV-C不支持C99。
可以网上查一下,如何让DEV-C支持C99的特性。
改成 c99 就可以了
【dev-C++ 技巧】支持 ☆C++14,【windows api】,C99 的方法
https://fishc.com.cn/thread-173223-1-1.html
(出处: 鱼C论坛)
加个 -std=c99 这个应该就是编译器的问题,看编译器支持的标准版本! livcui 发表于 2020-7-22 10:22
这种奇葩初始方法我还真没见过,试了试也报错了,但既然C++ Primer Plus 这本超级啰嗦的书都没讲,
可能是 ...
但既然C++ Primer Plus 这本超级啰嗦的书都没讲这是 C 的语法,而不是 C++ 的语法,C++ 的书上肯定没有。 永恒的蓝色梦想 发表于 2020-7-22 11:45
这是 C 的语法,而不是 C++ 的语法,C++ 的书上肯定没有。
嗯,楼主用的是C++啊,
再说,C基础的东西基本和C++一样(大部分) livcui 发表于 2020-7-22 11:47
嗯,楼主用的是C++啊,
再说,C基础的东西基本和C++一样(大部分)
可楼主学的是 C 啊 应该是编译环境的问题,我在Linux vi编译可以通过,也不用加-std=c99 永恒的蓝色梦想 发表于 2020-7-22 11:54
可楼主学的是 C 啊
hh,可一开始我不知道啊{:10_266:}
页:
[1]