编写函数,输出你用的编译环境下int,shortlong,float和double数据的最大小值

用c语言编写

#include <stdio.h>
#include <math.h>
int main(){
int intSize=sizeof(int);
int shortSize=sizeof(short);
int longSize=sizeof(long);
int doubleSize=sizeof(double);
printf("%d,%d,%d,%d\n",intSize,shortSize,longSize,doubleSize);
/*** 以float类型为例,根据最广泛采用的IEEE754标准规定,float数据类型长度为32位,其中最高位为符号位,中间8位为指数位,最后23位作为尾数位。
 最高位符号位通过0/1来区分正负,0正1负;指数位则规定采用移码的形式存储,这样可以保证指数部分为无符号数,方便比较大小。移码表示法是在数X上增加一个偏移量来定义的,如果机器字长为n,规定偏移量为2^(n-1),对于8位补码-128~127,可得到对应的阶码表示为0~255,其中0和255分别用来表示0和无穷大,1~254用来表示规范数字,即指数范围从-126到127;尾数部分统一规定为1.0-2.0之间,最高位必然为1,故可以省略,所以尾数部分从小数点后算起,最小可以取到1,最大则取到二进制1.1...1(小数点后23位),即取到2-2^-23,可近似约等于2。故得到float绝对值的最大值取到2^127*(2-2^-23)约等于2^128=3.4E+38。加上符号之后可得float表示范围为(-3.4E+38)~(3.4E+38)。当然实际是取不到的,开区间。绝对值最小则可以取到2^-127*1,即为1.175E-38。
***/
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-17
float 4 double 8 int 2 long 4 char 1 long a[5]=20追问

能详细一点吗

相似回答