小白求助
本帖最后由 起居有常 于 2020-2-16 22:50 编辑刚刚看了零基础学C的数据范围,想把各类型数据的取值范围打一下
#include <stdio.h>
#include <math.h>
int main()
{
printf("short =%d KB = %d bit 十进制数据范围是从 %d-%d ",sizeof(short),sizeof(short)*8,-pow(2,sizeof(short)*8-1),pow(2,sizeof(short)*8)-1);
}
结果打印出来前面的两个数据还是没问题 不过后面十进制数据范围是从 0 - 0
我再试了一下
int a = - pow(2,sizeof(short)*8-1);
printf("%d",a);
结果能得出 a = -32768
为何 - pow(2,sizeof(short)*8-1) 赋值给变量 a 时 ,能得出 -32768而直接打印的时候却变成 0 了呢?
请各位不吝赐教,谢谢! pow函数返回一个double,如果赋值给变量a,编译器会自动把double转换成int,但是在printf时编译器不能转换,所以出错
谢谢!
页:
[1]