C语言数据类型大小分析

来源:互联网 发布:阿里云 解析 记录类型 编辑:程序博客网 时间:2024/05/29 06:48

本文主要总结C语言中一些内置的数据类型问题。

数据类型范围尺寸由编译器厂商根据运行目标机的硬件与系统平台定制优化,但必须遵守 ISO/ANSI 规定:

1.short 至少 16位;
2.int 至少与 short 一样长;
3.long 至少 32位,且至少与 int 一样长;
4.long long 至少 64位,且至少与 long一样长;

5.float至少32位

6.double至少64位

7.long double精度不少于double的精度

 

在不同编译器的条件下,最好使用编译器的内置数据类型,但是可移植性太差,为了可移植性,可以考虑使用_int16,_int32,_int64等数据类型,但是效率却会慢很多。

本代码用于测试不同编译器的数据类型

/***********************************************************

 作者:demo

 功能:用于测试不同编译器下各数据类型的长度

 ************************************************************

 ******/

#include<stdio.h>

int main()

{

printf("shrot:%d\nint:%d\nlong:%d\nlong long:%d\n",

sizeof(short),

sizeof(int),

sizeof(long),

sizeof(long long));/*打印有符号整数类型的长度*/

printf("un_short:%d\nun_int%d\nun_long%d\nun_long long%d\n",

sizeof(unsigned short),

sizeof(unsigned int),

sizeof(unsigned long),

sizeof(unsigned long long));/*打印无符号整数的长度*/

printf("char:%d\n",sizeof(char));/*打印字符类型*/

printf("float:%d\ndouble:%d\n",

sizeof(float),

sizeof(double));/*打印浮点数类型的长度*/

return 0;

}

 

 

centos7中,gcc版本gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)

运行结果如下:

shrot:2

int:4

long:8

long long:8

un_short:2

un_int4

un_long8

un_long long8

char:1

float:4

double:8

0 0