繁体   English   中英

C ++数组初始化

[英]c++ array initialization

float minTime[7]={FLT_MAX};
    for(int i=0;i<7;i++)
        cout << "Min: " << minTime[i] << endl;

为什么我得到以下输出:

Min: 3.40282e+038
Min: 0
Min: 0
Min: 0
...

所有人的价值都应该与第一个相同吗? 如此处所指: C ++注释

您的链接页面显示“ ...未指定的元素设置为零。”

这是对的; 这样,仅将数组中的第一个元素指定为FLT_MAX ,其余元素初始化为零。 如果要将它们都设置为相同的值,则可以使用for循环,或更简洁地说:

std::fill_n(minTime, 7, FLT_MAX);

作为警告,C ++是一种硬语言。 这意味着很多人有很多错误信息,这在互联网上特别容易找到。 你最好从我们清单上书里学习。 (是的, 不在我们列表中的是因为它们也包含错误信息!)

所有人的价值都应该与第一个相同吗?

不! 当对数组进行部分初始化时,将对未初始化的数组元素进行值初始化(在这种情况下为零初始化 )。

C ++ 03第8.5.1 / 7节

如果列表中的初始化程序少于聚合中的成员,则每个未显式初始化的成员都应进行值初始化 (8.5)。
[例:

 struct S { int a; char* b; int c; }; S ss = { 1, "asdf" }; 

初始化ss.a 1, ss.b用“ASDF”,和ss.c与表单INT(的表达式的值),即,0。]

不,只有第一个值使用提供的值初始化,其他值按照标准初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM