初学C语言数据类型,感觉这样的东西确实不易记忆。
所以写一篇博客加深记忆,并方便日后查阅
以下是基本数据类型以及其常规状态下的数据:
注:带中括号的代表里面的东西可以写也可以不写,不写的情况下默认为括号内数值;
整型:
[signed] int: 字节数:4;位数:32;取值范围: -2147483648~2147483648;
[signed] short:字节数:2;位数:16;取值范围:-32768~32767;
[signed] long:字节数:4;位数:32;取值范围:-2147483648~2147483648;
unsigned int:字节数:4;位数:32;取值范围:0~4294967295;
unsigned short:字节数:2;位数:16;取值范围:0~65535;
unsigned long:字节数:4;位数:32;取值范围:0~4294967295;
注:+-代表从-到+,比如+-5表示取值范围从-5~+5;
浮点型:
float:字节数:4;位数:32;取值范围:+-(3.4*10^-38~3.4*10^38);
double:字节数:8;位数:64;取值范围:+-(1.7*10^-308~1.7*10^308);
long double:字节数:10;位数:80;取值范围:+-(1.2*10^-4932~1.2*10^4932);
注:这里的^代表的是其数学意义,即指数
字符型:
char:字节数:1;位数:8;
注意点:
1. signed代表有符号型,即这个数据类型可以储存负数也可以储存正数。当在数据类型前使用unsigned标签(即无符号)时,将只能储存正数,并且可存储的最大正数将是原来的一倍;
2.一个字节为8位,所以位数即字节数乘8;
3.long 在很多系统中占用8个字节(即64位);
4.long double 在有些系统中占用12个字节(即96位);
通过以上几个注意点可以发现,C语言中的数据类型的占用字节数和位数并不是固定的,取值范围也随位数和字节数的改变而改变。
所以,我们需要用到一个方法来确定一个系统的这几个参数:sizeof(数据类型/表达式)这个方法就是我们需要的。
以下,放出该方法的使用实例:
C语言代码:
#include <stdio.h>
#include <stdlib.h>
/*
这个程序用来查看本机的几个基本数据类型的占用字节数
*/
int main()
{
//使用sizeof()方法能输出括号内数据类型在本机中占用的字节数
//如果括号内输入的是表达式的话,将输出表达式运算结果代表的数据类型在本机中占用的字节数
printf("Size of int is: %d\n",sizeof(int));
printf("Size of short is: %d\n",sizeof(short));
printf("Size of long is: %d\n",sizeof(short));
printf("Size of unsigned int is: %d\n",sizeof(unsigned int));
printf("Size of float is: %d\n",sizeof(float));
printf("Size of double is: %d\n",sizeof(double));
printf("Size of long double is: %d\n",sizeof(long double));
printf("Size of char is: %d\n",sizeof(char));
printf("Size of num is: %d\n",sizeof(9/8));
return 0;
}
运行结果:
另附:C语言数据类型书写与阅读注意点
通过书写看出数据类型:
int : 123 304 25278 1 0 906;
long: 123l 304L 25278L 1L 0l 906l; (long型数据一般在数字后方加上一个L(l))
float: 3.2 3. 0.038 .05 2E-3 2.45e17 105.4E-10 304.2E8(当小数点后都是零时,零可省略,当小数点前只有零时,零可省略。E(e)代表科学计数法,即:2E-3=2*10^-3)
double: 13.2f -1.7853E-2F 24.68700f .32F 0.33f(double型数据一般在数字后方加上一个F(f))
long double: 12.89L 3.47E34L .05L 1.L(long double型数据一般在数字后方加上一个L)
通过书写看出进制:
8进制: 0236 0527 06254; (8进制数一般在数字前加上0,八进制只能使用0~7的数)
16进制: 0x2073 0xA3B5 0XABCD 0XF0F00000L; (16进制一般在数字前加上0x或0X,十六进制可以使用0~9和a~f(A~F)来表示数据,不区分大小写(a~f)分别对应9之后的几个数)