你能向我解释为什么这不起作用:数据类型的问题
#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;
}
我尝试使用POW从CMATH,但我得到了相同的结果。显然,这输出“4.67681e + 049”。它应该输出的地方(使用Windows计算器)“4294967296”。
对于这个特定的任务,for循环是我自己的硬编码pow()
函数。我想要做的是制作一个程序,可以显示数据类型有多大,以及它的范围(位范围或其他,是吗?)
并添加转换任何整数数据类型,需要测试应该工作,我想。 – 2010-09-07 16:45:04
不错,难怪我在高中数学不及格。非常感谢 – Christopher 2010-09-07 16:49:29
'〜0'是错误的。首先,你认为你的整数是用二进制补码表示的,这是他们不能的。即使如此,OP所寻找的数字也不能表示为“int”,而只能表示为“unsigned int”。 '(无符号)-1'应该是始终有效的答案。在二进制补码中,你给出的数字是(int)-1。 – 2010-09-07 19:14:59