gpt4 book ai didi

c - C 中的 memset() 未初始化为 const double;

转载 作者:太空宇宙 更新时间:2023-11-04 00:04:12 24 4
gpt4 key购买 nike

您好,我有以下用 C 语言为 x86 编写的代码,

const double N = 4;
const double C = 1.0 / N; <---- 0.2500

double *array = (double*)calloc(10, sizeof(double));

memset(array, C, 10);

memset 的结果只为每个元素返回 0.0000 而不是 C 中存储的值..

有人可以帮忙吗?

最佳答案

memset 用给定的字节值初始化一 block 内存。字节是 unsigned char,这是一个比 double 小得多的单位,后者在您的体系结构中使用 8 个字节。除非 doubleC 的所有字节都相同,否则 memset 不能用于初始化 double 的数组值。在符合 IEEE-754 标准的系统上,例如各种 x86 变体,+0.0 的所有字节的所有位都是 0,因此您可以使用 memset(array[i] , 0, 10 * sizeof(double)) 将数组初始化为 0.0,但这既不可读也不可移植。对于大多数其他值,根本不可能。

你必须使用一个简单的 for 循环:

for (int i = 0; i < 10; i++)
array[i] = C;

循环将由编译器优化,尤其是当 C 是编译时常量时。

关于c - C 中的 memset() 未初始化为 const double;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30679871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com