C 程序设计教程(03)—— C 语言的数据类型(一):基本数据类型

c语言的PESQ 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;
}

运行结果如下:

c语言的PESQ C语言的数据类型_c语言_02

短整型、长整型、整型都是表示整型的,输出结果也相同(都为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;
}

运行结果如下:

c语言的PESQ C语言的数据类型_c语言_03

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;
}

以上程序的输出结果如下:

c语言的PESQ C语言的数据类型_c语言的PESQ_04

字符的大小写转换:

#include<stdio.h>
int main()
{
    char c1,c2;
    c1='A';
    c2='b';
    printf("大写字母转换为小写字母:%c\n", c1 + 32);
    printf("小写字母转换为大写字母:%c", c2 - 32);
    return 0;
}

以上程序的输出结果如下:

c语言的PESQ C语言的数据类型_整型_05

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;
}

以上程序的输出结果如下:

c语言的PESQ C语言的数据类型_基本数据类型_06