g++ 关于声明多维双精度数组的警告

2023-11-29

在我的 C++ 程序中,我试图初始化一个全为 0 的 double 类型的 3*3*3 数组。 在类头文件中,我声明了一个成员

double list[3][3][3];

当我打印出这个数组的内容时,我发现并非所有条目都如我所料为0。例如list[1][1][1] 的值为 4.03158e-321

因此我在构造函数中手动将此数组初始化为全 0:

list = {{{0,0,0},{0,0,0},{0,0,0}},
      {{0,0,0},{0,0,0},{0,0,0}},
      {{0,0,0},{0,0,0},{0,0,0}}};

这使我的程序可以工作,但是,我收到了编译器警告:

warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x

因此我的问题是

  1. 为什么列表在初始化后有非零条目 标题?
  2. 为什么我会收到上述警告消息,以及如何消除它?

我的编译器是 g++ (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2,gcc 版本 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)


在 C++03 中,您只能在定义数组时使用该初始化:

double list[3][3][3] = {{{0,0,0},{0,0,0},{0,0,0}},
                        {{0,0,0},{0,0,0},{0,0,0}},
                        {{0,0,0},{0,0,0},{0,0,0}}};

编译器警告说,根据当前标准,它不应该接受您的代码,即使它能够通过应用即将推出的标准规则来处理它,其中{...}被称为外部初始化器.

在这种特殊情况下,数组是一个成员,并且您想将其初始化为全零,您可以使用值初始化在 C++0x 中:

struct test { 
   double list[3][3][3];
   test() : list()
   {}
};

对于 POD 类型的成员(这是一个数组double是),上面的语法(list()) 在初始化列表中意味着该成员是值初始化这实际上意味着所有值都将设置为 0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

g++ 关于声明多维双精度数组的警告 的相关文章

随机推荐

  • 简单的 ContainerView 导致“不再支持使用 defaultContainer”。

    使用最新的 Ember 以下简单的 ContainerView 会导致错误 弃用 不再支持使用 defaultContainer defaultContainer lookup 请参阅 http git io EKPpnA 我想这与我将视图
  • 你能在 swift 中强制执行类型别名吗

    我正在尝试强制执行一个由Int不会与其他的混在一起Ints 假设您有以下类型别名 typealias EnemyId Int typealias WeaponId Int 我希望以下内容出现编译器错误 var enemy EnemyId E
  • Azure Linux Web 应用程序上的 ASP.NET Core NodeServices

    我习惯在 Windows 上发布 Azure WebApps 但现在我尝试将 ASP NET Core 3 带有 NodeServices 部署到 Linux WebApp 并且收到以下错误消息 InvalidOperationExcept
  • Spring Kafka - 在运行时订阅新主题

    我正在使用注释 KafkaListener使用我的应用程序上的主题 我的问题是 如果我在 kafka 中创建一个新主题 但我的消费者已经在运行 那么消费者似乎不会选择新主题 即使它与topicPattern我在用着 有没有办法定期 刷新 订
  • JavaScript 匿名函数中的 this 值

    谁能向我解释为什么A是真的并且B是假的吗 我本以为 B 也是如此 function MyObject MyObject prototype test function console log A this instanceof MyObje
  • 如何通过单击按钮打开 Whatsapp 群组?

    我制作了一个简单的电话簿 并且可以通过单击按钮打开 Whatsapp 联系人 这是示例代码 Intent intentWhatsapp new Intent android intent action MAIN intentWhatsapp
  • 覆盖默认身份表名称

    我想重命名默认的身份表名称 AspNet角色 AspNet用户索赔 AspNet用户登录 AspNet用户角色 AspNet用户 我了解如何使用 EF6 执行此操作 protected override void OnModelCreati
  • 跨域单选登录

    它不是我正在寻找的明确的跨域会话 但它是解释我想要的内容的最简单方法 我有一个创建网站的系统 这些网站托管在许多不同的服务器上 用户可以创建他们的帐户 然后他们可以创建很多网站 他们可以创造 www mysite com 子域名 mysit
  • Guice:如何在没有注入器或使用构造函数注入的情况下获取单例实例

    我有一个单例类定义为 Singleton class MySingletonClass 我有另一个使用此单例类的类 但必须使用 new 运算符创建该类 因此我不能使用构造函数注入或设置器注入等 class MyClass public vo
  • Javascript 查找链接的颜色

    所以我遇到的问题基本上已经解决了 我有一个 HTML 格式的外部网站列表 如下所示 a href http google com au http google com au a br a href http stackoverflow co
  • React-router-Dom:在 React 中重定向多个用户登录后的空白页面

    我的反应项目中有两个 用户和管理员 用户 我想在成功登录后将他们重定向到他们受尊重的页面 为了实现这一目标 我创建了一个名为的独立组件authenticatedRoute js并通过 AuthenticatedRoute 组件包装这些组件
  • PL/SQL 中的转义下划线

    我有一个与此类似的 oracle 触发器 AFTER INSERT OR UPDATE ON TABLE ABC FOR EACH ROW BEGIN IF new COLUMN A LIKE H THEN INSERT INTO TABL
  • 无法从 boost 子进程获取分段错误退出代码

    当子进程由于分段违规或除数为零或任何其他终止信号而被终止时 我试图获取子进程的退出代码 使用 boost process 和 boost asio 退出代码和错误代码始终返回 0 和成功 我在 CentOS 7 上使用 g 4 8 5 和
  • 将 hashmap 转换为 JSON 对象时从 Gson 获取 stackoverflowerror

    我想将树结构中的数据表示为 java 对象 然后我想将其转换为 JSON 对象 在 stackoverflow 条目的帮助下 将父 子关系的java arrayList转换为树 使用 GSON 将 hashmap 转换为 JSON 我有以下
  • 在 C 中为 Fortran 可分配内存分配内存

    我们试图在 C 中接管旧版 Fortran 代码 100 000 行代码 的内存分配 因为我们使用 C 库在集群上分区和分配分布式内存 可分配的变量在模块中定义 当我们调用使用这些模块的子例程时 索引似乎是错误的 移动了一位 然而 如果我们
  • Vue.js - 同一路线上的两个不同组件

    我试图弄清楚如何使用 Vue 在同一条路线上拥有 2 个不同的组件 主页或登录页面 取决于用户是否经过身份验证 也许我在文档中遗漏了一些东西 但我无法也无法弄清楚 有可能吗 Thx 在路由器映射中使用 auth 参数 router map
  • Azure 数据工厂 V2 检查复制活动的文件大小

    我需要对本地数据源中的文件运行复制活动 我需要检查文件大小 如果大小大于 0 则复制它们 如果文件大小为 0 我将发送通知 以便管理员检查源 问题是 在 获取元数据 活动中 字段列表中的参数不包括大小 此外 验证活动也不查找大小属性 有什么
  • Spyder 4 绘图窗格不显示

    使用 Spyder 4 它不再在控制台上方显示 绘图 窗格 我已确保后端设置为内联 但窗格仍然不显示 如果有人知道任何解决方案 将不胜感激 Spyder 维护者在这里 您需要进入菜单View gt Panes并激活与绘图窗格相对应的条目
  • java中如何比较两个日期?

    我正在尝试比较两个日期 我只想比较日期部分而不是时间部分 这就是我在程序中存储日期的方式 Thu Jan 27 23 20 00 GMT 2011 我有一个 ArrayList
  • g++ 关于声明多维双精度数组的警告

    在我的 C 程序中 我试图初始化一个全为 0 的 double 类型的 3 3 3 数组 在类头文件中 我声明了一个成员 double list 3 3 3 当我打印出这个数组的内容时 我发现并非所有条目都如我所料为0 例如list 1 1