gpt4 book ai didi

objective-c - 在 Unix 中使用 double ?

转载 作者:行者123 更新时间:2023-11-30 18:32:46 25 4
gpt4 key购买 nike

我正在调用 sysctl() 来检索 mem 统计信息,对于 void* oldVal 参数,我传递一个指向 double 的指针。然而,它没有将 double 设置为正确的值,而是将其设置为 0.00000

但是,当我尝试用 long 做完全相同的事情时,它会将其设置为正确的统计数据。为什么 double 被设置为 0.00000,而 long 被设置为正确的统计数据?

    int systemInfoNeeded[2] = {CTL_HW, HW_PHYSMEM};
size_t sizeOfBuffer = sizeof(totalAmount);

if (sysctl(systemInfoNeeded, 2, &totalAmount, &sizeOfBuffer, NULL, 0))
{
NSLog(@"Total memory stat retrieval failed.\n");
exit (EXIT_FAILURE);
}

totalAmount 是 double 的。第二次我将totalAmount的类型更改为long,它工作得很好。无论如何,我可以让双重工作吗?我想直接发送 totalAmount,而不是发送一个 long,然后将值分配给 totalAmount

我在 Mac OS X Snowleopard 上使用 Objective-C/C 和 Xcode 3.2.6

最佳答案

你不能只选择你最喜欢的数据类型并传递一个指向它的指针; sysctl 调用需要一个指向整数的指针,因此您必须提供该指针。如果将指针传递给 double 型,那么您将得到一个 double 型,其中包含将值表示为整数的位 - 结果是乱码。

关于objective-c - 在 Unix 中使用 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9269510/

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