gpt4 book ai didi

c++ - 数据类型问题

转载 作者:行者123 更新时间:2023-11-30 18:20:54 24 4
gpt4 key购买 nike

你能向我解释一下为什么这不起作用吗:

#include <iostream>
using namespace std;

double data_convert(int n);

int main(void) {
cout << data_convert(sizeof(int));
}

double data_convert(int n) {
int i;
double x;

x = 8 * n;
for(i = 0; i < 32; i++)
x = x * 32;
return x;
}

我尝试使用 cmath 的 pow,但得到了相同的结果。显然,这输出“4.67681e+049”。它应该输出(使用 Windows 计算器)“4294967296”。

for 循环是我自己针对此特定任务硬编码的 pow() 函数。我想做的就是制作一个程序,可以显示数据类型有多大,以及它的范围(位范围或其他东西,是吗?)

最佳答案

如果你想要2^32,你应该每次乘以2。您的代码每次都会乘以 32,因此您最终会得到一个更大的值。

此外,您的 x 值应从 1 开始。8 * n 实际上是整数中的位数,因此这应该是循环的上限:

x = 1;
for (i = 0; i < 8 * n; i++)
x = x * 2;
return x;

一个更简单的方法是按位求反 0,这将为您提供最大可能的整数:

return ~0;

将为您提供 2^32 - 1 = 4294967295(在 32 位计算机上)。

关于c++ - 数据类型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3660638/

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