C语言中的基本数据类型(整形、浮点型和字符型)
生活中我们通常会使用很多不同大小的收纳箱,如用来装围巾的、装上衣的以及装裤子的。为了不浪费柜子的空间,可以按照东西的大小用相应容积的收纳箱来收纳。
在 C语言中是同样的道理,存储什么样的数据,就用什么样的数据类型。C语言中有多种不同的基本数据类型,如图 1 所示。

图 1 基本数据类型
接下来分别介绍这些基本数据类型。
如果要定义多个整型变量,可以单独定义每个变量,例如:
也可以在 int 后面列出多个变量名,变量名之间用英文逗号隔开,例如:
另一种是先声明变量,再赋值,例如:
或者可以这样初始化变量:
整型的分类如下表所示:
在 C语言中,小数的类型为浮点型,也称实型。
声明单精度数据的格式为:
定义多个单精度类型变量,示例代码如下:
声明双精度数据的格式为:
定义多个长双精度类型变量,示例代码如下:
初始化浮点型变量有两种方式,一种是直接在声明时初始化变量,例如:
另一种是先声明变量,再赋值,例如:
在编写浮点型常量时,可以在常量的后面加上符号 F 或者 L 进行修饰:
例如:
例如输出不同的浮点型数据,主要代码如下:
定义字符型数据的格式如下:
定义多个字符型变量,示例代码如下:
第二种方式是先声明变量,再赋值,例如:
第二种方式,例如:
printf() 函数输出字符型数据的格式字符如下表所示。
输出字符的主要示例代码如下:
字符型数据在内存中存储的形式是字符的 ASCII,即一个无符号整数,与整数的存储形式一样,因此 C语言允许字符型数据与整型数据通用。例如:
在 C语言中是同样的道理,存储什么样的数据,就用什么样的数据类型。C语言中有多种不同的基本数据类型,如图 1 所示。

图 1 基本数据类型
接下来分别介绍这些基本数据类型。
C语言整型
数学中称 23、0、1314、520 这样的数据为整数,而在 C语言中,也称这类数据为整数,即整型数据。声明整型数据
整型数据使用 int 来声明,int 是 integer(整数)的缩写,声明整型数据的一般语法格式如下:int 标识符;上面的语法格式表示该标识符是整型数据。定义整型变量,代码如下:
int age; //定义整型变量age
如果要定义多个整型变量,可以单独定义每个变量,例如:
int age; //定义整型变量age,表示年龄 int high; //定义整型变量high,表示身高 int weight; //定义整型变量weight,表示体重
也可以在 int 后面列出多个变量名,变量名之间用英文逗号隔开,例如:
int age, high, weight; //定义整型变量age、high、weight上述的单独声明变量和同时列出多个变量名,这两种方法的效果是相同的,都是声明 int 类型的变量。但如果要同时声明多个变量,那么这些变量的类型必须都一样。
初始化整型变量
初始化整型变量,就是为整型变量赋值。初始化整型变量有以下几种方式,第一种是直接在声明时初始化变量,例如:int year=2019; //定义整型变量year并赋值 int month=6; //定义整型变量month并赋值 int day =1; //定义整型变量day并赋值
另一种是先声明变量,再赋值,例如:
int year, month, day; //定义整型变量year、month、day year =2019; //给变量year赋值 month =6; //给变量month赋值 day=1; //给变量day赋值
或者可以这样初始化变量:
int year, month, day; //定义整型变量year、month、day year =2019, month =6,day=1; //给变量year、month、day赋值以上赋值方式效果都是一样的。
其它整型
整型默认的是 int 类型(基本整型),但是整型不仅有基本整型,还有短整型、长整型和无符号整型,无符号整型又可与前 3 种匹配构成无符号基本整型、无符号短整型和无符号长整型。整型的分类如下表所示:
数据类型 | 含义 | 长度 | 取值范围 |
---|---|---|---|
unsigned short int | 无符号短整型 | 16位 | 0~65535 |
short int | 短整型 | 16位 | -32768~32767 |
unsigned int | 无符号基本整型 | 32位 | 0~4294967295 |
int | 基本整型 | 32位 | -2147483648~2147483647 |
unsigned long int | 无符号长整型 | 64位 | 0~18446744073709551615 |
long int | 长整型 | 64位 | -9223372036854775808~9223372036854775807 |
在编写整型变量时,可以在变量的后面加上符号 L 或者 U 进行修饰。L 表示该变量是长整型,U 表示该变量是无符号整型,例如:所有编译环境不同,整型的长度也可能不一样。应合理地选择声明类型,避免造成空间浪费。
long LongNum = 2000L; //L 表示长整形 unsigned long UnsignLongNum = 1234U; //U表示无符号整形表示长整型的后缀字母 L 和表示无符号整型的后缀字母 U 可以使用大写,也可以使用小写。如果不在后面加上后缀,在默认状态下,整型为 int 类型。
输出整型数据
输出数据同样要使用 printf() 函数,输出不同的整型数据需应用不同的格式字符,如下表所示。格式控制符 | 说明 |
---|---|
%c | 输出一个单一的字符 |
%hd、%d、%ld、%lld | 以十进制、有符号的形式输出 short、int、long、long long 类型的整数 |
%hu、%u、%lu、%llu | 以十进制、无符号(unsigned)的形式输出 short、int、long、long long 类型的整数 |
%ho、%o、%lo、%llo | 以八进制、不带前缀、无符号的形式输出 short、int、long、long long 类型的整数 |
%#ho、%#o、%#lo、%#llo | 以八进制、带前缀、无符号的形式输出 short、int、long、long long 类型的整数 |
%hx、%x、%lx、%llx %hX、%X、%lX、%llX |
以十六进制、不带前缀、无符号的形式输出 short、int、long、long long 类型的整数。如果 x 小写,那么输出的十六进制数字也小写;如果 X 大写,那么输出的十六进制数字也大写。 |
%#hx、%#x、%#lx、%#llx %#hX、%#X、%#lX、%#llX |
以十六进制、带前缀、无符号的形式输出 short、int、long、long long 类型的整数。如果 x 小写,那么输出的十六进制数字和前缀都小写;如果 X 大写,那么输出的十六进制数字和前缀都大写。 |
具体代码如下:表格中飘绿的格式控制符,都是 C99 标准新引入的。
#include<stdio.h> int main() { short sh = 200; //定义短整型数据 long lo = 65537; //定义长整型数据 int in=30000; //定义整型数据 printf(“短整型数据是:%hd\n”,sh); //输出短整型数据 printf(“整型数据是:%d\n”, in); //输出整型数据 printf(“长整型数据是:%ld\n”, lo); //输出长整型数据 return 0; }运行结果为:
短整型数据是:200
整型数据是:30000
长整型数据是:65537
C语言浮点型
生活中,我们买东西时常常会收到购物小票,购物小票上的数字(如 11.97、0.238 等)都是带小数点的数字,数学中称这类数字为小数。在 C语言中,小数的类型为浮点型,也称实型。
声明浮点型数据
C语言中将浮点型数据分为单精度数据、双精度数据以及长双精度数据,下面分别介绍。1) 单精度数据
单精度数据使用的关键字是 float,它在内存中占 4 个字节,取值范围是 4.4×10^-38~4.4×10^38,包含正负号。声明单精度数据的格式为:
float 标识符;上述代码表示该标识符是单精度类型。例如要定义一个变量 fruit:
float fruit; /*定义单精度类型变量*/
定义多个单精度类型变量,示例代码如下:
float apple; /*定义多个单精度类型变量*/ float vagetable; float row;或者
float apple, vagetable,row; /*定义多个单精度类型变量*/
2) 双精度数据
双精度数据使用的关键字是 double,它在内存中占 8 个字节,取值范围是 1.7×10^308~1.7×10^308,包含正负号。声明双精度数据的格式为:
double 标识符;上述代码表示该标识符是双精度类型。例如要定义一个变量 dDouble:
double dDouble; /*定义双精度类型变量*/定义多个双精度类型变量,示例代码如下:
double apple; /*定义多个双精度类型变量*/ double vagetable; double row;或者
double apple, vagetable,row; /*定义多个双精度类型变量*/
3) 长双精度数据
长双精度数据使用的关键字是 long double,它在内存中占 16 个字节,声明长双精度数据的格式如下:long double 标识符;上述代码表示该标识符是长双精度类型。例如要定义一个变量 ldDouble:
long double ldDouble; /*定义长双精度类型变量*/
定义多个长双精度类型变量,示例代码如下:
long double apple; /*定义多个长双精度类型变量*/ long double vagetable; long double row;或者
long double apple, vagetable,row; /*定义多个长双精度类型变量*/float 表示单精度浮点数,double 表示双精度浮点数。双精度浮点数是可以精确到小数点后 16 位的,从精确度方面来说,双精度浮点数要比单精度浮点数更精确。开发者可以根据自己的需要,合理选择这两种类型。
初始化浮点型变量
初始化浮点型变量,就是为浮点型变量赋值。初始化浮点型变量有两种方式,一种是直接在声明时初始化变量,例如:
float fFloat = 8.88f; // 定义浮点型变量 fFloat 并赋值 double dDouble = 99.9; // 定义浮点型变量 dDouble 并赋值 long double ldDouble = 5.21e-3L; // 定义浮点型变量 ldDouble 并赋值
另一种是先声明变量,再赋值,例如:
float fFloat; //定义浮点型变量fFloat double dDouble; //定义浮点型变量dDouble long double ldDouble; //定义浮点型变量ldDouble fFloat=8.88f; //给变量fFloat赋值 dDouble=99.9; //给变量dDouble赋值 ldDouble=5.21e-3L; //给变量ldDouble赋值以上赋值方式效果都是一样的。
在编写浮点型常量时,可以在常量的后面加上符号 F 或者 L 进行修饰:
- F 表示该常量是单精度类型(float);
- L 表示该常量为长双精度类型(long double)。
例如:
float fFloat=5.19e2F; /*单精度类型*/ long double LdDouble=4.354e-3L; /*长双精度类型*/如果不在后面加上后缀,在默认状态下,浮点型常量为双精度类型(double);在常量后面添加的后缀不区分大小写,大小写是通用的。
输出浮点型数据
想要输出浮点型数据,修改 printf() 函数的格式字符即可。printf() 函数输出浮点型数据的格式字符如下表所示。格式控制符 | 说明 |
---|---|
%f、%lf、%Lf | 以十进制的形式输出 float、double、long double 类型的小数 |
%e、%le、%Le %E、%lE、%LE |
以指数的形式输出 float、double、long double 类型的小数。如果 e 小写,那么输出结果中的 e 也小写;如果 E 大写,那么输出结果中的 E 也大写。 |
%g、%lg、%Lg %G、%lG、%LG |
以十进制和指数中较短的形式输出 float、double、long double 类型的小数,并且小数部分的最后不会添加多余的 0。如果 g 小写,那么当以指数形式输出时 e 也小写;如果 G 大写,那么当以指数形式输出时 E 也大写。 |
例如输出不同的浮点型数据,主要代码如下:
#define __USE_MINGW_ANSI_STDIO 1 #include <stdio.h> int main(){ float fFloat = 8.88f; //定义单精度类型变量fFloat并赋值 double dDouble = 9.99; //定义双精度类型变量dDouble并赋值 long double ldDouble = 5.12e-2; //定义长双精度类型变量ldDouble并赋值 printf("单精度数是:%f\n",fFloat); //输出单精度类型变量值 printf("双精度数是:%lf\n", dDouble); //输出双精度类型变量值 printf("长双精度数是:%Lf\n", ldDouble); //输出长双精度类型变量值 return 0; }运行结果如下:
单精度数是:8.880000
双精度数是:9.990000
长双精度数是:0.051200
C语言字符型
在 C语言中,将单个的字母、数字、符号用单引号标识,例如 'a'、'b'、'0'、'!',这样的数据被称为字符型数据。字符型数据在内存空间中占一个字节。声明字符型数据使用的关键字是 char。声明字符型数据
char 是 character 的缩写,character 的中文含义是字符。可以使用 char 来修饰字符型数据。定义字符型数据的格式如下:
char 标识符;上述代码表示这个标识符是字符型的,例如,要定义一个字符型变量 name,代码如下:
char name; /*定义一个字符型变量*/
定义多个字符型变量,示例代码如下:
char name; /*定义多个字符型变量*/ char sex; char address;或者
char name, sex, address; /*定义多个字符型变量*/
初始化字符型变量
初始化字符型变量的方式与前面介绍的整型变量和浮点型变量类似,例如:1) 一个字符型变量的赋值
第一种方式是直接在声明时初始化变量,例如:char name='g'; //定义字符型变量name并赋值
第二种方式是先声明变量,再赋值,例如:
char name; //定义字符型变量name name= 'g'; //给变量name赋值
2) 多个字符型变量的赋值
第一种方式,例如:char alpha='e', number='3', symbol='*'; /*定义多个字符型变量并赋值*/
第二种方式,例如:
char alpha; /*定义多个字符型变量再赋值*/ char number; char symbol; alpha ='e'; number ='3'; symbol ='*';或者:
char alpha; /*定义多个字符型变量再赋值*/ char number; char symbol; alpha='e', number ='3', symbol ='*';
输出字符型数据
输出语句依然使用 printf() 函数,想要输出字符型数据,对应修改 printf() 的格式字符即可。printf() 函数输出字符型数据的格式字符如下表所示。
格式控制符 | 说明 |
---|---|
%c | 输出一个单一的字符 |
%s | 输出一个字符串 |
输出字符的主要示例代码如下:
char cChar1 = 'h', cChar2 = '2'; // 定义字符变量 printf("%c%c", cChar1, cChar2);运行结果如下:
01 h2
字符型数据在内存中存储的形式是字符的 ASCII,即一个无符号整数,与整数的存储形式一样,因此 C语言允许字符型数据与整型数据通用。例如:
char cChar1; /*字符型变量cChar1*/ char cChar2; /*字符型变量cChar2*/ cChar1='a'; /*为变量赋值*/ cChar2=97; printf("%c\n",cChar1); /*输出变量cCharl,其中%c是输出格式说明*/ printf("%c\n",cChar2); /*输出变量cChar2*/上面的代码中,首先定义两个字符型变量,在为两个变量赋值时,对一个变量赋值 'a',而对另一个赋值 97。最后输出结果都是字符 a。