静态初始化顺序惨败

2024-04-17

我在一本书中读到有关 SIOF 的内容,它给出了一个例子:

//file1.cpp
extern int y;
int x=y+1;

//file2.cpp
extern int x;
int y=x+1;  

现在我的问题是:
在上面的代码中,会发生以下情况吗?

  1. 在编译 file1.cpp 时,编译器将 y 保留原样,即不为其分配存储空间。
  2. 编译器为 x 分配存储空间,但不对其进行初始化。
  3. 在编译 file2.cpp 时,编译器将 x 保留原样,即不为其分配存储空间。
  4. 编译器为 y 分配存储空间,但不初始化它。
  5. 在链接 file1.o 和 file2.o 时,现在先初始化 file2.o,所以现在:
    x 的初始值是否为 0?或者没有被初始化?

初始化步骤在C++标准的3.6.2“非局部对象的初始化”中给出:

Step 1: x and y在任何其他初始化发生之前都被零初始化。

Step 2: x or y是动态初始化的 - 标准未指定哪一个。该变量将获得值1因为另一个变量将被零初始化。

步骤3:另一个变量将被动态初始化,获取值2.

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

静态初始化顺序惨败 的相关文章

  • 在动态事件处理程序中引用“this”

    在我的 myClass 类中 我使用 Reflection Emit 为 myClass 类成员之一动态编写事件处理程序 我已经成功地做到了这一点 现在 我想修改事件处理程序以调用 myClass 类中的实例方法之一 但是 我无法弄清楚如何
  • 如何将包含 5000 条记录的 Excel 文件插入到 documentDB 中?

    我有一个 Excel 文件 最初约有 200 行 我能够将 Excel 文件转换为数据表 并且所有内容都正确插入到 documentdb 中 Excel 文件现在有 5000 行 在插入 30 40 条记录后不会插入 其余所有行不会插入到
  • Accept() 是线程安全的吗?

    我目前正在用 C 语言为我正在做的课程编写一个简单的网络服务器 我们的一项要求是实现一个线程池来使用 pthread 处理连接 我知道我将如何粗略地执行此操作 在主线程中调用accept并将文件描述符传递给freee线程 但是我的朋友建议了
  • 使用API​​隐藏程序标题栏

    它可以使用 c 和 windows api 删除窗口控制台标题栏 如果是的话如何 请 这个简单的应用程序隐藏并显示其所在控制台的标题栏 它会立即将控制台标题更改为 guid 以查找窗口句柄 然后 它使用 ToggleTitleBar 使用找
  • Qt 计算和比较密码哈希

    目前正在 Qt 中为测验程序构建面向 Web 的身份验证服务 据我了解 在数据库中存储用户密码时 必须对其进行隐藏 以防落入坏人之手 流行的方法似乎是添加的过程Salt https en wikipedia org wiki Salt cr
  • 有没有办法使用 i387 fsqrt 指令获得正确的舍入?

    有没有办法使用 i387 fsqrt 指令获得正确的舍入 除了改变精确模式在 x87 控制字中 我知道这是可能的 但这不是一个合理的解决方案 因为它存在令人讨厌的重入型问题 如果 sqrt 操作中断 精度模式将出错 我正在处理的问题如下 x
  • 序列化和反序列化 Visual Studio 解决方案文件 - 或以编程方式编辑?

    我想以编程方式添加和删除项目 解决方案文件夹和其他项目 例如解决方案的资源文件 但我不确定最好的方法是什么 对于那些不知道的人 高度简化 解决方案文件 sln 通常如下所示 Microsoft Visual Studio Solution
  • C# datagridview 列转入数组

    我正在用 C 构建一个程序 并在其中包含一个 datagridview 组件 datagridview 有固定数量的列 2 我想将其保存到两个单独的数组中 但行数确实发生了变化 我怎么能这样做呢 假设一个名为 dataGridView1 的
  • 操纵 setter 以避免 null

    通常我们有 public string code get set 如果最终有人将代码设置为 null 我需要避免空引用异常 我尝试这个想法 有什么帮助吗 public string code get set if code null cod
  • 编译器错误“错误:在文件范围内可变地修改了‘字符串’”

    考虑 include
  • 防止GDB中的PLT(过程链接表)断点

    在最新版本的 GDB 中 在库函数调用上设置断点会导致多个实际断点 调用过程链接表 PLT 实际的函数调用 这意味着当调用库函数时 我们每次都会经历两次中断 在以前的 GDB 版本中 只会创建 2 因此您只能得到一次中断 那么问题来了 是否
  • 更改 IdentityServer4 实体框架表名称

    我正在尝试更改由 IdentityServer4 的 PersistedGrantDb 和 ConfigurationDb 创建的默认表名称 并让实体框架生成正确的 SQL 例如 而不是使用实体IdentityServer4 EntityF
  • 系统错误 124 - SHFileOperation 的 ERROR_INVALID_LEVEL

    我在使用时遇到问题SHFileOperation SHFileOperation SHFILEOPSTRUCT https stackoverflow com questions 9191415 shfileoperation shfile
  • 将非算术类型作为参数传递给 cmath 函数是否有效?

    给定以下用户定义类型S具有转换功能double struct S operator double return 1 0 以及以下调用cmath http en cppreference com w cpp header cmath使用类型的
  • 设计 Javascript 前端 <-> C++ 后端通信

    在我最近的将来 我将不得不制作一个具有 C 后端和 Web 前端的系统 要求 目前 我对此了解不多 我认为前端将触发数据传输 而不是后端 所以不需要类似 Comet 的东西 由于在该领域的经验可能很少 我非常感谢您对我所做的设计决策的评论
  • 使用(linq to sql)更新错误

    我有两个表 通过外键 CarrierID 绑定 Carrier CarrierID CarrierName CarrierID 1 CarrierName DHL CarrierID 2 CarrierName Fedex Vendor V
  • 使用 foreach 循环和 XmlNodeList C# 将新节点附加到节点列表

    目前我处理的是这样的XML类型 XML FILE http 20drive google com open id 0By5BxgNi9eGcRldxcEZNU0FDTzQ 参考XML文件 我想检查一个节点 如果找不到该节点 我必须将该节点附
  • TPL 数据流块下游如何获取源生成的数据?

    我正在使用 TPL Dataflow 处理图像 我收到处理请求 从流中读取图像 应用多次转换 然后将生成的图像写入另一个流 Request gt Stream gt Image gt Image gt Stream 为此 我使用块 Buff
  • 如何将对象转换为传递给函数的类型?

    这不会编译 但我想做的只是将对象转换为传递给函数的 t public void My Func Object input Type t t object ab TypeDescriptor GetConverter t ConvertFro
  • 从有符号字符转换为无符号字符然后再转换回来?

    我正在使用 JNI 并有一个 jbyte 类型的数组 其中 jbyte 表示为有符号字符 即范围从 128 到 127 jbyte 表示图像像素 对于图像处理 我们通常希望像素分量的范围为0到255 因此 我想将jbyte值转换为0到255

随机推荐

  • 如何设置 pygame.transform.rotate() 的枢轴点(旋转中心)?

    我想围绕中心以外的点旋转矩形 到目前为止我的代码是 import pygame pygame init w 640 h 480 degree 45 screen pygame display set mode w h surf pygame
  • Xdebug v3.0.2 与 PHP v8.0.0

    我刚刚使用 XAMPP v3 2 4 迁移到 php v8 0 0 但 Xdebug 不起作用 执行不会在断点处停止 我的安装说明 Download php xdebug 3 0 2 8 0 vs16 x86 64 dll Move the
  • Symfony:解析 web.xml 时出现 InvalidArgumentException

    最近 我将 Symfony 系统移动到另一台服务器 从那时起就出现错误 技术细节是 Windows Server 2012 上的 apache 2 4 服务器 apache可以通过本地网络访问的文件服务器 当我移动 Symfony 页面时
  • ERC721:转账调用者不是所有者也不是批准的

    我有一个 nftToken 合约 可以将代币铸造到 msg sender 然后我在市场合约中有一个函数 可以将 nft 从所有者转移到市场合约 但是 我收到一条错误消息 ERC721 转账调用者不是所有者也不是批准的 这是我的 nftCon
  • ReplaceAll 性能秘诀是什么? [HTML 转义]

    我花了一些时间寻找转义 html 字符串的最佳方法 并发现了一些相关讨论 讨论1 https stackoverflow com questions 24816 escaping html strings with jquery 讨论2 h
  • Android获取recyclerview项目和位置上选定的文本部分

    在我的适配器中 可以选择显示弹出窗口的项目 例如copy cut或等等 现在我怎样才能获得所选的文本部分recyclerView项目和位置 我阅读了更多有关找到此解决方案的文档 但我不知道该怎么做 这是我的适配器 我想获取文本和位置的选定部
  • Python .localize 和 tzinfo 之间的日期时间差异

    为什么这两行会产生不同的结果 gt gt gt import pytz gt gt gt from datetime import datetime gt gt gt local tz pytz timezone America Los A
  • UICollectionView cellForItemAt indexPath 在 iOS 10 中跳过行索引

    I have UICollectionView具有水平滚动和分页功能 当我第一次滚动到下一页或上一页或从左到右更改滚动方向时 indexPath row 的值cellForItemAtIndexPath改变了 3 而不是 1 然后它就可以正
  • css 100%宽度div不占据父级的整个宽度

    我在一个页面上有两个 div 一个带有背景的网格容器和一个需要放置在另一个网格中心的内部网格 我的CSS html body margin 0 padding 0 width 100 grid container background f8
  • 什么是“3D语法”?

    在编写 Racket 宏的上下文中 3D 语法 是什么意思 这句话我听过好几次了 包含一次对宏的引用I正在写作 但那是不久前的事了 我修复了它 现在我不记得我最初做错了什么 另外 是 3D 语法吗always坏的 或者是像eval 如果你认
  • 是否可以将 CSS Scroll Snap 应用于 HTML 标签而不是 Body 标签

    CSS Scroll Snap 允许浏览器捕捉滚动到容器中的元素 要将相同的逻辑应用于垂直页面滚动 我发现它必须应用于而不是 见下文 这不是一个主要问题 但它确实有效地创建了一个滚动区域而不是使用窗口滚动 虽然这看起来不错 但它有一些副作用
  • 在 Xcode Interface Builder 中对场景进行排序

    所以我不知道该怎么称呼它 但它是 Xcode 中 Storyboard Editor 左侧的那个栏 显示所有不同的场景 我喜欢使用故事板 但我对它们最大的不满是场景以完全随机的方式组织在该列表中 每次我向故事板添加新的视图控制器时 它都会被
  • 阻止 Chrome 扩展程序在我的网站上运行

    作为一名网络开发人员 有什么方法可以阻止用户的 Chrome 扩展应用到我的网站吗 即标题 元标记等等 此外 如果有的话 是否还有一种方法可以将特定扩展列入白名单 这是不可能的 在网络服务器端 您只能控制浏览器允许您控制的内容 简单来说 这
  • Derby 还是 MySQL 或者...?

    对于什么类型的需求 您会选择 Apache Derby 或 Java DB 而不是 MySQL 反之亦然 我环顾四周 人们只是比较两者 但没有人谈论何时考虑每一个 我正在使用 Glassfish Java Restlet MySQL 开发一
  • sql从多个记录中仅选择最新的

    我有一个名为 客户年龄 的表 如下所示 ID 1 2 3 4 5 6 7 8 9 NAME JIM JIM JIM NICK NICK NICK Paul Paul Paul VALUE 20 13 12 10 20 8 4 24 14 我
  • 我们可以让 selenium webdriver 在运行时等待用户点击网页链接而不使用隐式等待吗?

    我正在使用 Firefox 驱动程序和 java 并尝试从网站上抓取一些数据 其中涉及人工交互 我必须要求用户输入搜索字符串 然后相应地用户必须通过人眼分析来选择打开哪个搜索结果 我们的努力只是为了通过脚本让一些零碎的东西更快地工作 我的问
  • 检查记录是否存在数据库 - 错误显示

    如何检查用户名或电子邮件是否存在 然后将错误消息放入错误数组中 现在我有 sql SELECT username email FROM users WHERE username username OR email email query m
  • 如何在 ios、swift 中生成公钥/私钥对,如下所示

    这就是我生成公钥 私钥对的方式 var statusCode OSStatus var publicKey SecKey var privateKey SecKey let publicKeyAttribute NSObject NSObj
  • 扫描仪无法读取整个句子 - 扫描仪类的 next() 和 nextLine() 之间的区别

    我正在编写一个程序 允许用户输入数据然后输出它 它的 3 4 正确 但当它到达输出地址时 它只打印一个单词 让我们只说 Archbishop Street 的 Archbishop 我该如何解决 import java util class
  • 静态初始化顺序惨败

    我在一本书中读到有关 SIOF 的内容 它给出了一个例子 file1 cpp extern int y int x y 1 file2 cpp extern int x int y x 1 现在我的问题是 在上面的代码中 会发生以下情况吗