使用指定的初始化器初始化数组时出现奇怪的值

2024-03-10

当我初始化下面的数组时,所有输出看起来都正常,除了values[3]。因为某些原因values[3]初始化为values[0]+values[5]正在输出一个非常大的数字。我的猜测是我正在尝试分配values[0]+values[5]在它们被正确存储在内存之前,但如果有人能解释那就太好了。

int main (void)
{

    int values[10] = { 
        [0]=197,[2]=-100,[5]=350,
        [3]=values[0] + values[5],
        [9]= values[5]/10
    };

    int index;

    for (index=0; index<10; index++)
        printf("values[%i] = %i\n", index, values[index]);


    return 0;
}

输出如下:

values[0] = 197
values[1] = 0
values[2] = -100
values[3] = -1217411959
values[4] = 0
values[5] = 350
values[6] = 0
values[7] = 0
values[8] = 0
values[9] = 35

看起来您在这里遇到了未指定的行为,因为根据 C99 标准部分草案,初始化列表表达式的求值顺序未指定6.7.8:

The order in which any side effects occur among the initialization list expressions is unspecified.133)

注释 133 说:

特别是,评估顺序不必与顺序相同 子对象初始化。

As far as I can tell, the normative text that backs up note 133 would be from section 6.5:

除非稍后指定 [...] 的评估顺序 子表达式和副作用发生的顺序都是 未指定。

我们可以看到初始化器是一个完整的表达式6.8 (强调我的):

完整表达式是一个不属于另一个表达式的表达式 表达式或声明符。以下每一项都是完整的表达式:初始化器; [...]

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

使用指定的初始化器初始化数组时出现奇怪的值 的相关文章

  • Subversion 和 Visual Studio 项目的最佳实践

    我最近开始在 Visual Studio 中处理各种 C 项目 作为大型系统计划的一部分 该系统将用于替换我们当前的系统 该系统是由用 C 和 Perl 编写的各种程序和脚本拼凑而成的 我现在正在进行的项目已经达到了颠覆的临界点 我想知道什
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如
  • System.IO.IOException:由于意外>数据包格式,握手失败?

    有谁知道这意味着什么 System Net WebException 底层连接已关闭 发送时发生意外错误 gt System IO IOException 由于意外 握手失败 数据包格式 在 System Net Security SslS
  • 如何尝试/捕获所有异常

    我正在完成由其他人启动的 UWP 应用程序 该应用程序经常崩溃 我总是陷入困境应用程序 at if global System Diagnostics Debugger IsAttached global System Diagnostic
  • 将字符串中的“奇怪”字符转换为罗马字符

    我需要能够将用户输入仅转换为 a z 罗马字符 不区分大小写 所以 我感兴趣的角色只有26个 然而 用户可以输入他们想要的任何 形式 的字符 西班牙语 n 法语 e 和德语 u 都可以包含用户输入中的重音符号 这些重音符号会被程序删除 我已
  • SFINAE 如何使用省略号?

    过去 当使用 SFINAE 选择构造函数重载时 我通常使用以下内容 template
  • 获取尚未实例化的类的函数句柄

    我对 C 相当陌生 我想做的事情可能看起来很复杂 首先 我想获取一些函数的句柄以便稍后执行它们 我知道我可以通过以下方式实现这一目标 List
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何
  • 无法解析远程名称 - webclient

    我面临这个错误 The remote name could not be resolved russgates85 001 site1 smarterasp net 当我请求使用 Web 客户端读取 html 内容时 出现错误 下面是我的代
  • TcpClient 在异步读取期间断开连接

    我有几个关于完成 tcp 连接的问题 客户端使用 Tcp 连接到我的服务器 在接受客户端后listener BeginAcceptTcpClient ConnectionEstabilishedCallback null 我开始阅读netw
  • C# 委托责任链

    为了我的理解目的 我实现了责任链模式 Abstract Base Type public abstract class CustomerServiceDesk protected CustomerServiceDesk nextHandle
  • 2D morton 码编码/解码 64 位

    如何将给定 x y 的莫顿代码 z 顺序 编码 解码为 32 位无符号整数 生成 64 位莫顿代码 反之亦然 我确实有 xy2d 和 d2xy 但仅适用于 16 位宽的坐标 产生 32 位莫顿数 在网上查了很多 但没有找到 请帮忙 如果您可
  • 为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?

    我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
  • OpenCV 2.4.3 中的阴影去除

    我正在使用 OpenCV 2 4 3 最新版本 使用内置的视频流检测前景GMG http docs opencv org modules gpu doc video html highlight gmg gpu 3a 3aGMG GPU算法
  • 默认析构函数做了多少事情

    C 类中的默认析构函数是否会自动删除代码中未显式分配的成员 例如 class C public C int arr 100 int main void C myC new C delete myC return 0 删除 myC 会自动释放
  • 从 R 到 C 处理列表并访问它

    我想使用从 R 获得的 C 列表 我意识到这个问题与此非常相似 使用 call 在 R 和 C 之间传递数据帧 https stackoverflow com questions 6658168 passing a data frame f
  • 使用 mingw32 在 Windows 上构建 glew 时“DllMainCRTStartup@12”的多个定义

    我关注了这个主题 使用 mingw 使建筑物在 Windows 上闪闪发光 https stackoverflow com questions 6005076 building glew on windows with mingw 6005
  • DataTable:通过 LINQ 或 LAMBDA 进行动态 Group By 表达式

    我有一个数据表 我想在其中对未指定数量的字段进行分组 发生这种情况的原因是用户可以选择他想要分组的字段 所以 实际上 我将选择推入列表中 在这个选择上 我必须对我的数据表进行分组 想象一下这段代码 VB 或 C 都一样 public voi
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet
  • OSError: [WinError 193] %1 不是有效的 Win32 应用程序,同时使用 CTypes 在 python 中读取自定义 DLL

    我正在尝试编写用 python 封装 C 库的代码 我计划使用 CTypes 来完成此操作 并使用 Visual Studio 来编译我的 DLL 我从一个简单的函数开始 在 Visual Studio 内的标头中添加了以下内容 然后将其构

随机推荐

  • 顺序一致性和原子性有什么区别?

    我读到 java 易失性是顺序一致的 但不是原子的 对于原子性java提供了不同的库 有人可以用简单的英语解释两者之间的区别吗 我相信问题范围包括 C C 因此添加这些语言标签以获得更多受众 想象一下一个类中的这两个变量 int i 0 v
  • 为什么 GridView 内的 LinkBut​​ton 不会引发其 OnClick 事件?

    我在 GridView 中有一个 LinkBut ton 通过 TemplateField 无论我如何尝试 LinkBut ton 都不会调用其事件处理程序 我都尝试过 传统的事件处理程序 OnClick GridView 级别的 OnRo
  • 根据中心性对顶点着色

    我正在尝试更改 igraph 生成的图形中顶点的颜色 更具体地说 我有一个从邻接矩阵创建的 95 个节点图 我想根据它们的度数 介数 特征值中心性 接近度对它们进行着色 但我猜在我知道如何用它来做之后 我可以和其他人一起做 所以到目前为止我
  • ChartJS 不使用 Moment.js 显示时间数据

    我正在尝试按小时绘制给定日期的一系列数据点 并非每个小时都包含在数据集中 但我仍然想显示从 0 00 23 00 的时间并绘制可用的数据点 我的错误是 该方法未实现 要么找不到适配器 要么找不到适配器 提供了不完整的集成 然而 纵观文档 h
  • 在 Perl 中将 UTF8 字符串转换为 ASCII

    我已经尝试了 Google 和 StackOverflow 推荐的 我能找到的 所有内容 包括使用 Encode 我的代码可以工作 但它只使用 UTF8 并且我收到宽字符警告 我知道如何解决这些警告 但我没有将 UTF8 用于其他任何用途
  • 隐藏除前 4 个元素之外的所有元素

    有无穷无尽的元素 我想要做的是隐藏除前 4 个元素之外的所有元素 带有 not 选择器 我想让点击全部可见 这可以用CSS实现吗 ul li li li li li li li li li li must hide li li must h
  • 使用 Base64 图像的 HTML 到 PDF 会抛出 FileNotFoundException

    我正在使用 itextpdf 5 0 6 jar Java 8 当我尝试使用 base64 图像标签导出 html 代码时 出现文件未找到异常 如果我删除图像标签 一切都会很好 我发现了一些关于覆盖图像标签处理器的解决方案 但大多数都是旧的
  • 关闭 Selenium IDE 中新打开的选项卡或窗口

    在 Windows7 和 Firefox 中使用 Selenium IDE 自动单击链接可能会生成新选项卡或新窗口 close 关闭原始窗口或选项卡 而不是新窗口或选项卡 也许如果我有新创建的 ID 我可以选择它然后关闭它 但我不知道如何自
  • 对两个对象数组的数据求和

    我有两个对象数组 我想对具有相同键 在本例中为 id 的对象求和 如果没有匹配键 则只需创建一个新的 如果我是 我很抱歉没有解释清楚 我对 JavaScript Array Object 很陌生 var dataOne id 1 total
  • 将另一个声音添加到 .NET Speech 中

    如何将其他声音添加到 NET Speech 中 我想使用捷克语语音 我找到了一些 sis files Eliska22k sis但我不知道如何使用它 SpeechSynthesizer synth new SpeechSynthesizer
  • Common Lisp 案例和引用元素

    我正在用 CL 编写一个地下城爬行游戏 但在处理案例表单时遇到了问题 两件事情 Common Lisp 抱怨Duplicate keyform QUOTE in CASE statement make instance cl rogue t
  • 如何在 python-flask 中添加自定义字体?

    我尝试过使用 fontface css 样式 但字体没有渲染 还有另一种方法可以使用 python flask 来做到这一点吗 p style font family trial font weight bold Hello p 上面是我的
  • 使 Div 向上滚动时返回到其原始位置

    当您向下和向上滚动时 我有一个带动画的 div 问题是 当我非常快地向上和向下滚动而不让 div 完成其动画时 div 会逐渐从上部屏幕中消失 如果我删除 animate 函数中的 stop 并快速上下滚动 div 会继续执行此操作一段时间
  • 如何在Android Studio上实时查看Sqlite数据库中插入的数据

    你能帮我解决这个问题吗 我正在将值插入到我的 Sqlite 数据库中 如何检查或查看插入的数据 有没有任何工具或其他技术来显示数据 如果您想显示数据Log尝试下面的代码 for Contact cn contacts String log
  • .NET Standard 2.0 无法在 .NET Framework 2.0 中引用

    我收到一个错误 c xxxx csproj 目标为 NETStandard Version v2 0 它无法被面向 NETFramework Version v2 0 的项目引用 WindowsFormsApp1 如何解决 遗憾的是 您无法
  • 用核心运动计算倾斜角

    我的申请有一个记录会话 当用户开始记录会话时 我开始从设备的 CMMotionManager 对象收集数据并将它们存储在 CoreData 上以供稍后处理和呈现 我正在收集的数据包括 GPS 数据 加速度计数据和陀螺仪数据 数据的频率为10
  • 将 webkit 滚动条样式应用于指定元素

    我对以双冒号为前缀的伪元素很陌生 我看到一篇博客文章讨论使用一些仅适用于 webkit 的 css 来设置滚动条的样式 伪元素 CSS 可以应用于单个元素吗 This works by applying style to all scrol
  • 在节点主管中,如何监视目录中的所有内容是否发生更改?

    https github com isaacs node supervisor https github com isaacs node supervisor 我想查看 api 目录及其所有子目录内的所有内容 递归地 我怎样才能做到这一点
  • CouchDB 入门

    我已经在我的 Linux 云服务器上安装了 CouchDB 并且我正在尝试访问 Futon 欢迎屏幕 O Reilly 书中说要转到 127 0 0 1 portnum 但我不在本地主机上工作 它是我的远程服务器 所以我应该能够使用 xxx
  • 使用指定的初始化器初始化数组时出现奇怪的值

    当我初始化下面的数组时 所有输出看起来都正常 除了values 3 因为某些原因values 3 初始化为values 0 values 5 正在输出一个非常大的数字 我的猜测是我正在尝试分配values 0 values 5 在它们被正确