本文介绍了使用MemSet(…)合法吗, ;0, ;…)在一系列的双打上?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
将Double数组(使用memset(…, 0, …)
)或包含Double的结构的内存清零合法吗?
这个问题意味着两件不同的事情:
从C标准的角度看:这是NOT的未定义行为吗?(我认为,在任何特定的平台上,这都不可能是未定义的行为,因为它只是取决于内存中浮点数的表示形式--仅此而已。)
从实际角度看:在英特尔平台上可以吗?(不管标准是什么。)
推荐答案
C99标准附件F规定:
和紧随其后:
因此,由于IEC 60559基本上是IEEE754-1985,并且由于这指定8个零字节表示0.0(正如@David Heffernan所说),这意味着如果您发现__STDC_IEC_559__
已定义,您可以使用memset
安全地执行0.0初始化。
这篇关于使用MemSet(…)合法吗, ;0, ;…)在一系列的双打上?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!