C语言基本数据类型

C语言基本数据类型

0330

C语言规定,定义变量的时候必须指明变量的类型。例如:

int num;

num是变量名,int是变量的数据类型。

数据的种类有很多,比如整数、小数、符号(a、A、#)等。数据类型的作用主要有两个:

  • 指明变量存储的数据种类,比如int类型的变量只能存储整数;
  • 指明变量占用的内存空间大小,比如int类型变量占用的内存空间通常是 4 个字节。

C语言提供了很多种数据类型,常见的有整形、浮点型和字符型。

整形

整形专门用来定义存储整数的变量,int是最常用的一种整形。

C语言提供了很多种整形,如表 1 所示。

整 形含 义
int最常用的整形。
short int又称“短整型”,可以简写为 short。
long int又称“长整形”,可以简写为 long。
long long int又称“超长整形”,可以简写为 long long。

C 语言标准没有具体规定各个整形变量占用多少内存空间,只要求 long 不能比 int 小,short 不能比 int 大。表 1 中各整形变量占用内存空间的大小关系是:

short ≤ int ≤ long ≤ long long通常情况下:

  • short 型变量占用 2 个字节的内存,能存储 -32768 ~ +32767(-215 ~ +215-1)范围内的整数;
  • int 类型变量占用  4 个字节的内存,能存储 -2147483648 ~ +2147483647(-231 ~ +231-1)范围内的整数;
  • long 类型变量占用 4 或 8 个字节的内存,占用 4 个字节时和 int 相同;占用 8 个字节时能存储 -263 ~ +263-1 范围内的整数,这是一个非常大的区间。
  • long long 型变量占用 8 个字节的内存,能存储 -263 ~ +263-1 范围内的整数,这是一个非常大的区间。

举个简单的例子:

short short_num = 10;
int int_num = 100;
long long_num = 1000;
long long long_long_num = 10000;

程序中分别定义了 4 种整形变量,并分别给它们赋了值。

浮点型

浮点型专门用来定义存储小数的变量。

C语言提供了 3 种浮点型,分别是 float(单精度浮点型)、double(双精度浮点型)和 long double(长双精度浮点型):

  • float 型变量占用 4 个字节的内存空间,能精确存储 6~7 位有效数字,能表示 -3.4*10-38 ~ +3.4*1038 范围内的小数;
  • double 型变量通常占用 8 个字节的内存空间,能精确存储 15~16 位有效数字,能表示 -1.7*10-308 ~ +1.7*10308 范围内的小数;
  • long double 型变量占用 8 或 16 个字节的内存空间,占用 8 个字节时和 double 相同;占用 16 个字节时,能精确存储 18~19 位有效数字,能表示 -1.2*10-4932 ~ 1.2*104932 范围内的小数。

举个简单的例子:

float f_num = 1.23;
double d_num = 2.3456;
long double ld_num = 3.1415926;

字符型

字符型用来定义存储字符的变量。在 C 语言中,将用' '括起来的字母、数字、标点符号等称为字符,例如 ‘a’、’A’、’1’、’9’、’#’、’*’ 等都是字符。

字符型用 char 表示,char 是 character(字符)的缩写,见明知意。举个简单的例子:

char c = 'A';

定义字符变量 c 并赋初值为 ‘A’。

字符型变量占用 1 个字节的内存空间。字符型变量也不是任意字符都能存储,它只能存储 ASCII 字符集中记录的 127 个字符,比如圆周率 π 没有在 ASCII 字符集中,就无法存储到字符型变量中。

使用字符型变量存储字符时,内存空间中存储的并非字符,而是字符在 ASCII 中对应的整数。例如,字符 ‘A’ 在 ASCII 中对应的十进制数是 65,它的二进制形式是 100 0001,因此字符变量 c 中存储的就是0100 0001

ASCII 字符集中,所有字符可以用 7 个二进制来表示,因此都可以用 char 型变量来存储。

char 型变量还可以用来存储 -128 ~ 127 范围内的整数,例如:

char a = -128;

signed和unsigned

某些场景中,变量的取值范围可能只有正值,例如用变量来存储学号、年龄、库存量等。这种情况下,可以将变量定义为“无符号”类型。

所谓无符号类型,就是在原有数据类型的前面加上unsigned。例如unsigned int表示无符号整形,此类型的变量只能用来存储非负整数。

和无符号类型相对地,是signed有符号类型。例如signed int表示有符号整形,它和 int 类型一样,可以存储负数、0 和整数。默认情况下,不加 unsigned 修饰的类型都是 signed 有符号类型,signed可以省略不写。

signed 和 unsigned 只能用来修饰整形和字符型,不能修饰浮点型。当使用 unsigned 修饰整形和字符型时,定义的变量能存储更大范围的正值,如下表所示:

无符号类型含 义
unsigned int无符号整形,占用 4 个字节,能存储 0 ~ 4294967295(0 ~ 232-1)范围内的整数。
unsigned short无符号短整型,占用 2 个字节,能存储 0 ~ 65535(0 ~ 216-1)范围内的整数。
unsigned long无符号长整形,占用 4 个字节时和 unsigned int 一样;占用 8 个字节时,能存储 0 ~ 264-1 范围内的整数。
unsigned long long无符号超长整形,占用 8 个字节,能存储 0 ~ 264-1 范围内的整数。
unsigned char无符号字符型,占用 1 个字节,能存储 ASCII 字符集中所有的字符,也能存储 0 ~ 255 之间的整数。

举个简单的例子:

#include <stdio.h>
int main() {
    signed int num = -10; // 等价于 int num = -10;
    unsigned int u_num = 10;

    signed char c = 'A'; // 等价于 char c = 'A';
    unsigned char u_c = 255;

    printf("num = %d\n", num); //输出 num 的值
    printf("u_num = %u\n", u_num); //输出 u_num 的值
    printf("c = %c\n", c); //输出 c 的值
    printf("u_c = %u", u_c); //输出 u_c 的值
    return 0;
}

运行结果为:

num = -10
u_num = 10
c = A
u_c = 255

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏
分享
评论 抢沙发
HarryPotter的头像|艾奇编程网

昵称

取消
昵称表情