大哥们帮忙看看
#include <stdio.h>#include <math.h>
int main()
{
int result;
result = pow(2, 31) - 1;
printf("result = %d\n", result);
return 0;
}
这里面的负一是啥意思 整形数的范围就是2的32次方
其中正负各一半,所以正值最大2的31次方,算上0,最大值只能是2的32次方减一 防止溢出 负一,楼上已经给你解释了
不过你这个程序应该会有报错 ------- 因为 pow() 的类型是 double 型,而你定义的是 int 型,故而会有警告:从 double 型转换到 int 型,会有数据丢失 昨非 发表于 2020-11-26 14:34
整形数的范围就是2的32次方
其中正负各一半,所以正值最大2的31次方,算上0,最大值只能是2的32次方减一
2的31次方减一吧,..我刚刚又回过头去看了一下甲鱼哥之前讲的那个求范围的那个,他写的好像是负2的十六次方到2的十六次方 风过无痕1989 发表于 2020-11-26 15:27
负一,楼上已经给你解释了
不过你这个程序应该会有报错 ------- 因为 pow() 的类型是 double 型,而你定义 ...
Double不是int的一种表现形式吗?。。这个数据好像是正确的运行完之后{:10_257:}{:10_257:} C160 发表于 2020-11-26 17:40
Double不是int的一种表现形式吗?。。这个数据好像是正确的运行完之后
double精度高于int, C160 发表于 2020-11-26 17:32
2的31次方减一吧,..我刚刚又回过头去看了一下甲鱼哥之前讲的那个求范围的那个,他写的好像是负2的十六次 ...
1字节8位,int型占4字节,就是32位 C160 发表于 2020-11-26 17:40
Double不是int的一种表现形式吗?。。这个数据好像是正确的运行完之后
double 型是双精度的数据格式,存在一个精度问题,比如:
int 2 若转换为 double 型,就是 2.000000
所以,在转换过程中,就会有数据丢失的情况 昨非 发表于 2020-11-26 17:46
1字节8位,int型占4字节,就是32位
讲的也是四个字节 C160 发表于 2020-11-26 19:12
讲的也是四个字节
那肯定是四个字节啊,一共32位 这不难理解的
昨非 发表于 2020-11-26 19:23
这不难理解的
{:10_269:}{:10_269:},四个字节三十二位范围是负31次方到正31,但是甲鱼哥之前那个教学视频写的负16次方到正16 C160 发表于 2020-11-26 19:54
,四个字节三十二位范围是负31次方到正31,但是甲鱼哥之前那个教学视频写的负16次方 ...
哪一期?
老版的第三期, 让我们求数据类型的范围举的一个例子 C160 发表于 2020-11-26 21:13
让我们求数据类型的范围举的一个例子
下次回复记得点击别人帖子左下角,不然收不到消息的 这是去掉-1后溢出的情况
#include <stdio.h>
#include <math.h>
int main()
{
int result;
result = pow(2, 31) ;
printf("result = %d\n", result);
return 0;
}
输出:result = -2147483648
正常:
#include <stdio.h>
#include <math.h>
int main()
{
int result;
result = pow(2, 31)-1 ;
printf("result = %d\n", result);
return 0;
}
输出result = 2147483647
这段代码的本意就是输出int的最大值,
如果小甲鱼说的不是这个,
那只能说小甲鱼错了或者他讲的目的不是要输出int的最大值
没什么其他问题就把帖子结了吧 昨非 发表于 2020-11-27 21:42
这是去掉-1后溢出的情况
输出:
好的,明白了,谢谢了
页:
[1]