你scanf输出类型搞错了,应该是:
scanf("%lf",&x);
我还是一名小学生,比较擅长C和C++,有啥可以问我,我尽力回答
double对应的是 %lf
float 才是 %f
对于short而言,一共16 位,高位为符号位。
对于 int 而言,一共32 位,高位为符号位。
也就是说对于1而言:
short: 0000000000000001
int : 00000000000000000000000000000001
符号位均为0表示正数。
对于负数而言,就是符号位为1,其它位为该值的补码(取反加一就是补码)。
也就是说对于-1而言:
short: 1111111111111111
int : 11111111111111111111111111111111
所以short的范围为-32768~32767;
最小为:1000000000000000
最大为:0111111111111111
int的范围为-2147483648~2147483647
最小为:10000000000000000000000000000000
最大为:01111111111111111111111111111111
知道有符号数了,无符号数就更加简单了,第一位也算有效位,没有补码运算(因为没有负数)。例如:
unsigned short
最大为1111111111111111最小为0000000000000000
无符号short范围:0~65535
unsigned int
最大为11111111111111111111111111111111
最小为00000000000000000000000000000000
无符号int范围为:0~4294967295