本文介绍了使用MemSet(…)合法吗, 0, …)在一系列的双打上?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

将Double数组(使用memset(…, 0, …))或包含Double的结构的内存清零合法吗?

这个问题意味着两件不同的事情:

  1. 从C标准的角度看:这是NOT的未定义行为吗?(我认为,在任何特定的平台上,这都不可能是未定义的行为,因为它只是取决于内存中浮点数的表示形式--仅此而已。)

  2. 从实际角度看:在英特尔平台上可以吗?(不管标准是什么。)

推荐答案

C99标准附件F规定:

和紧随其后:

因此,由于IEC 60559基本上是IEEE754-1985,并且由于这指定8个零字节表示0.0(正如@David Heffernan所说),这意味着如果您发现__STDC_IEC_559__已定义,您可以使用memset安全地执行0.0初始化。

这篇关于使用MemSet(…)合法吗, 0, …)在一系列的双打上?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-23 23:08