pow()后加了一个-1,有什么含义吗?我不加的话计算结果也一致,为啥?谢谢
#include <stdio.h>#include <math.h>
int main()
{
int result;
result = pow(2, 31) - 1;
printf("result = %d\n", result);
return 0;
} #include <stdio.h>
#include <math.h>
int main()
{
int result;
result = pow(2, 31) - 1;
printf("result = %d\n", result);
return 0;
}
/*
result = 2147483647
请按任意键继续. . .
*/
#include <stdio.h>
#include <math.h>
int main()
{
int result;
result = pow(2, 31);
printf("result = %d\n", result);
return 0;
}
/*
result = -2147483648
请按任意键继续. . .
*/ 人造人 发表于 2020-1-13 14:04
谢谢回复,可是我复制了你的代码验证了,结果也是没有负号,我搞不懂 lpx9393 发表于 2020-1-13 14:09
谢谢回复,可是我复制了你的代码验证了,结果也是没有负号,我搞不懂
截图,或者贴出输出结果
不然我怎么看得到?
#include <stdio.h>
int main(void)
{
printf("int: %lu\n", sizeof(int));
return 0;
}
/*
int: 4
请按任意键继续. . .
*/ 人造人 发表于 2020-1-13 14:11
截图,或者贴出输出结果
不然我怎么看得到?
#include <stdio.h>
#include <math.h>
int main()
{
int result;
result = pow(2, 31);
printf("result = %d\n", result);
return 0;
}
result = 2147483647
#include <stdio.h>
#include <math.h>
int main()
{
int result;
result = pow(2, 31) - 1;
printf("result = %d\n", result);
return 0;
}
result = 2147483647 #include <stdio.h>
int main(void)
{
printf("int: %lu\n", sizeof(int));
return 0;
}
/*
int: 4
请按任意键继续. . .
*/ lpx9393 发表于 2020-1-13 14:16
不,不可能,一定是你哪里操作错了
lpx9393 发表于 2020-1-13 14:16
截图,代码截图,执行结果也截图
人造人 发表于 2020-1-13 14:23
截图,代码截图,执行结果也截图
额我不会截图,找不到,第一次用,抱歉
不过我重启了devc,然后重新运行,这次就有报错了,如下:
8 16 C:\Users\86135\Desktop\未命名2.cpp overflow in implicit constant conversion [-Woverflow]
谢谢回答{:5_106:} lpx9393 发表于 2020-1-13 14:39
额我不会截图,找不到,第一次用,抱歉
不过我重启了devc,然后重新运行,这次就有报错了,如下:
8 16 ...
一个警告,程序应该可以运行,运行一下,看看结果
人造人 发表于 2020-1-13 14:41
一个警告,程序应该可以运行,运行一下,看看结果
#include <stdio.h>
#include <math.h>
int main()
{
int result;
result = pow(2, 31);
printf("result = %d\n", result);
return 0;
}
result = 2147483647
--------------------------------
Process exited after 0.04251 seconds with return value 0
请按任意键继续. . .
lpx9393 发表于 2020-1-13 14:45
你的意思是减1和不减1输出都是一样的?
那就是你的操作问题了
我不相信是编译器问题
你那个pow()后面如果不-1就会得到一个错误结果,因为数据溢出了,int型定义的reresult范围(-2^31~2^31-1),至于你得到结果一样,可能是没有重新编译导致了exe没有重新生成,运行的还是上次结果.
页:
[1]