1、整数类型(int)
int是一种数据类型,在编程语言(C、C++、C#、Java等)中,是用于定义整数类型变量的标识符。C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负。int是整型之一,一般被称为整型。int代表有符号整数,也就是说,用int声明的变量可以是正数,可以是负数,也可以是零,但是只能是整数。标准规定int的最小取值范围是 -32767 到 32767。int的取值范围因机器而异,但是一定要大于或者等于 -32767 到 32767。标准整数类型的存储大小和值范围,如下表,
类型 | 存储大小 | 值范围 |
char | 1 字节 | -128 到 127 或 0 到 255 |
unsigned char | 1 字节 | 0 到 255 |
signed char | 1 字节 | -128 到 127 |
int | 2 或 4 字节 | -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 |
unsigned int | 2 或 4 字节 | 0 到 65,535 或 0 到 4,294,967,295 |
short | 2 字节 | -32,768 到 32,767 |
unsigned short | 2 字节 | 0 到 65,535 |
long | 4 字节 | -2,147,483,648 到 2,147,483,647 |
unsigned long | 4 字节 | 0 到 4,294,967,295 |
为了得到某个类型或某个变量在特定平台上的准确大小,可以使用 sizeof
运算符。表达式 sizeof(type)
得到对象或类型的存储字节大小。
例如,
#include <stdio.h>
#include <limits.h>
int main()
{
printf("int 存储大小 : %lu \n", sizeof(int));
return 0;
}
2、浮点类型
每当需要带小数的数字(例如,9.99
或3.14515
)时,都应使用浮点类型。标准浮点类型的存储大小、值范围和精度,如下表,
类型 | 存储大小 | 值范围 | 精度 |
float | 4 字节 | 1.2E-38 到 3.4E+38 | 6 位小数 |
double | 8 字节 | 2.3E-308 到 1.7E+308 | 15 位小数 |
long double | 16 字节 | 3.4E-4932 到 1.1E+4932 | 19 位小数 |
将输出浮点类型占用的存储空间以及它的范围值输出,例如,
#include <stdio.h>
#include <float.h>
int main()
{
printf("float 存储最大字节数 : %lu \n", sizeof(float));
printf("float 最小值: %E\n", FLT_MIN );
printf("float 最大值: %E\n", FLT_MAX );
printf("精度值: %d\n", FLT_DIG );
return 0;
}
3、字符类型
char类型的值占用所有数据类型的最小内存量。通常只需要一个字节。char不仅是一种整数,也是一种特殊的类型:字符(character)。可以通过字符常量为char类型的变量指定初始值。
1)字符常量可以只是单引号之间的字符。常用单引号表示字符的字面量,如,'a'
, '1'
。单引号''
也是一个字符,printf
和scanf
里用的%c
来输入输出字符,例如,
#include <stdio.h>
int main()
{
char c;
char d;
c = 1;
d = '1';//将字符赋值给一个char变量
if(c == d){
printf("相等\n");
}else{
printf("不相等\n");
}
printf("c=%d\n",c);
printf("d=%d\n",d);
return 0;
}
注意:char
整数类型和字符类型不相等,如1
与'1'
,一个是数字,一个是字符。
2)字符的输入输出
#include <stdio.h>
int main()
{
char c;
scanf("%c",&c);//scanf将值传给c,以下面两种形式输出
printf("c=%d\n",c);//以整数值是多少
printf("d='%c'\n",c);//如果当做一个字符,它是多少,这里%c的''自己加上去的,这样结果显示时有''
return 0;
}
3)字符计算
C语言中字符是一种整数,可以做运算。例如,
#include <stdio.h>
int main()
{
char c = 'A';
c++;
printf("%c\n",c);
return 0;
}
4、void 类型和指针型(*)
无值型字节长度为0, 主要有两个用途:
1)明确地表示一个函数不返回任何值;
2)可以产生一个同一类型指针(可根据需要动态分配给其内存)。 类型为 void * 的指针代表对象的地址,而不是类型。例如,内存分配函数 void *malloc( size_t size ); 返回指向 void 的指针,可以转换为任何数据类型。
例如,
#include <stdio.h>
int main()
{
void *ptr = NULL; //void 指针
void *buffer; /*buffer被定义为无值型指针*/
int *p = NULL;// 整型指针
char *cp = NULL;//字符指针
float *fp = NULL;//浮点指针
//void指针的大小
printf("void指针的大小 = %d\n\n",sizeof(ptr));
//整型指针的大小
printf("整型指针的大小 = %d\n\n",sizeof(p));
//字符指针的大小
printf("字符指针的大小 = %d\n\n",sizeof(cp));
//浮点指针的大小
printf("浮点指针的大小 = %d\n\n",sizeof(fp));
return 0;
}