C 程序设计教程(03)—— C 语言的数据类型(一):基本数据类型
该专栏主要介绍 C 语言的基本语法,作为《程序设计语言》课程的课件与参考资料,用于《程序设计语言》课程的教学,供入门级用户阅读。
目录
- C 程序设计教程(03)—— C 语言的数据类型(一):基本数据类型
- 一、数据类型简介
- 二、常量和变量
- 1、常量
- 2、符号常量
- 3、变量
- 三、基本数据类型
- 1、整型
- 2、字符型
- 3、实型
一、数据类型简介
C 语言提供了丰富的数据类型,每一个常量和变量必须属于某一种数据类型。C 语言中的数据类型如下:
(1)基本类型:整型(int),字符型(char),实型(单精度型:float,双精度型:double)
(2)构造类型:数组类型,结构体类型,共用体类型
(3)指针类型
(4)空类型
C 语言有 4 种基本数据类型,分别是:整型,字符型,单精度型和双精度型。基本类型的前面可以使用修饰符,常用的修饰符如下:
signed(有符号的)
unsigned(无符号的)
long(长型)
short(短型)
二、常量和变量
1、常量
C 语言中的常量是不能被程序修改的固定值,常量可以是任意数据类型。如下表所示:
数据类型 | 常量举例 |
char | ‘a’、‘\n’、‘8’ |
int | 21、123、-120、1258 |
long int | 35000、-125870 |
short int | 10、-25、32 |
unsigned int | 1000、888、52 |
float | 125.85、4.2e-4 |
double | 120.65、-12.58、2587.658 |
2、符号常量
C 语言允许将程序中的常量定义为一个标识符,称为符号常量。符号常量一般使用大写英文字母表示,符号常量在使用前必须先定义,定义的格式如下:
#define <符号常量名> <常量>
例如:
#define PAI 3.1415926
#define TRUE 1
#define FALSE 0
说明:#define 是 C 语言的预处理命令,表示定义的符号常量在程序运行前将由其对应的常量替换。
定义符号常量的目的是为了提高程序的可读性,便于程序的调试和修改。因此在定义符号常量名时,应使其尽可能表达它所代表的常量的含义。
此外,若要对一个程序中多次使用的符号常量的值进行修改,只需要对预处理命令中定义的常量值进行修改。
3、变量
其值可以被程序改变的量称为变量。一个变量应该有一个名字(标识符),表示内存中的某个存储单元,在该存储单元中存放变量的值。
所有的变量在使用之前必须定义。定义变量的格式如下:
type 变量列表;
type 必须是有效的数据类型,变量列表可以由一个或多个由逗号分隔的多个标识符构成。例如:
int i,j;
short int s,t;
unsigned int u;
double salary;
三、基本数据类型
1、整型
(1)整型常量
整型常量可以是十进制、八进制和十六进制。默认为十进制,八进制常量以 0 开头(比如:017),十六进制常量以 0x 开头(比如 0x1a)。
在一个常数的后面加上字母 l 或 L,则认为是长整型,比如:10L,79l,012L,0xAL,0x4fL 等。
(2)整型变量
C 语言要求所有用到的变量都必须在程序中指定其类型。输出一个整型数据需要使用 %d。例如:
#include <stdio.h>
int main()
{
int a = 10; //定义一个整形变量a,并0赋值为10
short b = 10; //定义一个短整型变量b,并赋值为10
long c = 10; //定义一个长整型变量c,并赋值为10
printf("a的值为:%d\n", a);
printf("b的值为:%d\n", b);
printf("c的值为:%d\n", c);
return 0;
}
运行结果如下:
短整型、长整型、整型都是表示整型的,输出结果也相同(都为10),它们的主要区别是所占内存空间的大小不同,C 语言规定 short int 类型所占内存空间小于或等于 int,Int 小于或等于 long。使用 sizeof 查看他们所占内存空间大小。
#include <stdio.h>
int main()
{
printf("long:%d\n", sizeof(long));
printf("short:%d\n", sizeof(short));
printf("int:%d\n", sizeof(int));
return 0;
}
运行结果如下:
2、字符型
(1)字符型常量
字符型常量是用一对单引号括起来的一个字符。在 C 语言中,字符是按照其对应的 ASCII 码来存储的,一个字符占一个字节。
C 语言中字符型常量按整型(int)存储,所以字符型常量可以像整数一样参与相关运算。例如:
'a'-32 //结果为:97-32=65
'A'+32 //结果为:65+32=97
'9'-9 //结果为:57-9=48
(2)转义字符
通常使用转义字符表示 ASCII 字符集中不可打印的控制字符和特定功能的字符。例如:单引号( ’ )、双引号( " )、反斜杠( \ )等。C 语言中常用的转义字符如下:
转义字符 | 意义 | ASCII 码 |
\b | 退格(BS) | 008 |
\f | 换页(FF) | 012 |
\n | 换行(LF) | 010 |
\r | 回车(CR) | 013 |
\t | 水平制表(HT) | 009 |
\v | 垂直制表(VT) | 011 |
\ | 反斜杠 | 092 |
? | 问号字符 | 063 |
\’ | 单引号字符 | 039 |
\" | 双引号字符 | 034 |
\0 | 空字符 | 000 |
(3)字符型变量
字符型变量用来存放字符常量,一个字符型变量只能存放一个字符。字符型变量的定义格式如下:
char c1,c2;
c1='a';
c2='b';
要输出 char 类型变量,使用 %c,例如:
#include<stdio.h>
int main()
{
char c1,c2;
c1 = 97;
c2 = 98;
printf("输出字符型变量的值:%c,%c",c1,c2);
printf("字符型变量占用的字节数:%d",sizeof(char));
return 0;
}
以上程序的输出结果如下:
字符的大小写转换:
#include<stdio.h>
int main()
{
char c1,c2;
c1='A';
c2='b';
printf("大写字母转换为小写字母:%c\n", c1 + 32);
printf("小写字母转换为大写字母:%c", c2 - 32);
return 0;
}
以上程序的输出结果如下:
3、实型
(1)实型常量
实型常量又称浮点数,是一个用十进制表示的数。实数的值包含整数部分、尾数部分和指数部分。小数点之前是整数部分,小数点之后是尾数部分,指数部分用 E 或 e 开头,指数部分可以为负。所有的实型常量均为双精度类型。例如:
15.75
1.575E10
1575E-2
-0.0025
-2.5e-3
25E-4
//实型常量的整数部分为 0 时,可以省略整数部分,如:
.57
.0075e2
-.125
-.175E-2
字母 E 或 e 之前必须有数字,且 E 或 e 后面的指数必须为整数。下面的常量是错误的:
e3
2.1e3.5
(2)实型变量
实型变量分为单精度型(float)和双精度型(double)。float 型数据在内存中占用 4 个字节,double 型数据在内存中占用 8 个字节,单精度型实数具有 7 位有效数字,双精度型实数具有 15~16 位有效数字。
输出 float 类型的数据需要使用 %f ,输出 double 类型的数据需要使用 %lf,例如:
#include<stdio.h>
int main()
{
float f1,f2,f3;
double d1,d2,d3;
f1 = 1.25; f2 = 1.23456789; f3 = 1.2e10;
d1 = 1.25; d2 = 1.23456789; d3 = 1.2e10;
printf("单精度型:f1=%f,f2=%f,f3=%f\n",f1,f2,f3);
printf("双精度型:d1=%lf,d2=%lf,d3=%lf\n",d1,d2,d3);
printf("单精度型占用的字节数:%d\n",sizeof(float));
printf("双精度型占用的字节数:%d",sizeof(double));
return 0;
}
以上程序的输出结果如下: