C语言基本数据类型(1)
发布日期:2021-07-01 04:36:42 浏览次数:2 分类:技术文章

本文共 3978 字,大约阅读时间需要 13 分钟。

5 C语言支持的基本数据类型

       通过前面的举例分析,我们知道房子的类型,决定了房子的属性。例如,一房一厅的房子,有一个房间的空间;两房一厅的房子,有两个房间的空间。同理,在C语言中,提供了“数据类型”,它可以定义变量。不同数据类型定义的变量,有不同的存储空间和使用方式。

       C语言支持的基本数据类型有:

(1) char类型,char类型称为“字符”类型。一个字符是 'A', 'B', 'C', '#', '!' 这样的数据。char类型的变量称为字符型变量,可以存放一个字符。char类型变量占据1个字节的存储空间。

(2) short 类型,short类型称为“短整型”。它用于存储一个整数值,例如100,188这样的整数值,short类型变量占据2个字节的存储空间。

(3) int类型,int类型称为“整型”。它用于存储一个整数值,int类型变量占据4个字节的存储空间。

(4) long类型,long类型称为“长整型”。它用于存储一个整数值,long类型变量占据4个字节的存储空间。而且 long 类型可以组合成 long long 类型,它占据8个字节的存储空间。

(5) float类型,floag类型称为“单精度浮点型”。它存放一个浮点数,例如12.345, 16.888这样带小数点的小数。float类型变量占据4个字节的存储空间。

(6) double类型,double类型称为“双精度浮点数”。它存储一个浮点数,double类型变量占据8个字节的存储空间。

       对于char、short、int和long类型,默认是“有符号数”类型,所以,能够表示负数。那么,它们可以结合unsigned关键字使用,表示无符号类型数据。

       注意:float、double表示的浮点数类型,不可以与unsigned关键字组合使用。

       我们可以归纳总结“有符号数类型”和“无符号数类型”的存储容量和表示数值范围如下表。

数据类型

容量(位数)

取值范围

char

8

-128 ~ 127

(-2^7 ~ 2^7-1)

unsigned char

8

0 ~ 255

(0 ~ 2^8 - 1)

short

16

-32767 ~ 32768

(-2^15 ~ 2^15-1)

unsigned char

16

0 ~ 65536

(0 ~ 2^18-1)

int

32

-2147483648 ~ +2147483647

(-2^31 ~ 2^31-1)

unsigned int

32

0 ~ 4294967295

(0 ~ 2^32-1)

long

32

-2147483648 ~ +2147483647

(-2^31 ~ 2^31-1)

unsigned long

32

0 ~ 4294967295

(0 ~ 2^32-1)

long long

64

-9223372036854775808 ~

9223372036854775807

(-2^63 ~ 2^63-1)

unsigned long long

64

0 ~ 18446744073709551615

(0 ~ 2^64-1)

       char类型的最大值是2^7-1,unsigned char类型的最大值是2^8-1,可以看到,由于char类型变量的最高位作为符号位,只有7位走位数值为,而unsigned char类型的变量,全部8位都作为数值为。所以,能够表示最大值的范围不一样。假设变量的数值位有N位,那么,能够表示的最大值是2的N次方减一,即 2^N - 1。例如数值位为1111 1111,此时,数值位有8位,那么,它的值是1*2^0 + 1*2^1 + 1*2^2 + 1*2^3 + 1*2^4 + 1*2^5 + 1*2^6 + 1*2^7;如果这样计算,比较繁琐,那么,我们可以思考:

1111 1111 + 1 = 1 0000 0000

所以,有:

1111 1111 = 1 0000 0000 – 1

= 1*2^8 - 1

       通过这样的方式计算,就可以快速得到N位全1的二进制,它的值是2^N – 1。

 

5.1 字符类型

       在C语言中,定义了'A'、'B'、'C'、'#'、'?'这样的符号为字符。一个字符可以存放到一个字符变量中。字符的特点是:

(1) 必须使用单引号 ' ' 把字符包含起来;

(2) 字符可以是ASCII表中字符集的字符;

       C语言提供了关键字char表示“字符类型”;可以定义字符类型的变量;例如:

#include <stdio.h>            //包含头文件, 为了使用printf()函数;

int main()                           //定义程序的主函数, 就是程序的入口地址;

{                                               //主函数的开始标记;

       char a = 'X'//定义char类型变量a, 并给变量赋值 'X' 字符

       char b = 'Y'//定义char类型变量b, 并给变量赋值 'Y' 字符

       printf("a = %c, b = %c\n", a, b);

       return 0;                      //返回结束状态;

}                                               //主函数的结束标记;

 

       程序运行的输出结果如下:

mylinux@ubuntu:~/src/test$ gcc test.c -o exe

mylinux@ubuntu:~/src/test$ ./exe

a = X, b = Y

       可以看到,用char关键字定义了字符类型的变量,分别定义了变量a和变量b,都是字符类型,并且给a变量存放了'X'字符,给b变量存放了'Y'字符。

       最后,在printf()函数中,通过 %c 格式,输出字符类型变量中存放的字符。

       注意:给字符变量赋值的字符,必须使用单引号' '把字符给包含起来。

       一个字符在内存中存储的是其ASCII值,那么,我们可以把一个字符的ASCII值赋给一个字符变量,然后,再把它输出。测试的例子如下。

#include <stdio.h>            //包含头文件, 为了使用printf()函数;

int main()                           //定义程序的主函数, 就是程序的入口地址;

{                                               //主函数的开始标记;

       char a = 48;  // '0' 字符的 ASCII 值赋给字符变量 a;

       char b = 49;  // '1' 字符的 ASCII 值赋给字符变量 b;

       char c = 50;  // '2' 字符的 ASCII 值赋给字符变量 c;

       printf("a = %c, b = %c, c = %c\n", a, b, c);

 

       return 0;                      //返回结束状态;

}                                               //主函数的结束标记;

       程序运行结果如下:

mylinux@ubuntu:~/src/test$ gcc test.c -o exe

mylinux@ubuntu:~/src/test$ ./exe

a = 0, b = 1, c = 2

       可以看到,我们把 '0' 字符的ASCII值赋给字符变量a,如同把字符 '0' 赋给字符变量a一样。因为,字符 '0' 的ASCII值是48,在内存中就是存储为48这个数值,所以,如同直接把ASCII值赋给字符变量。

       通过这个例子,我们也分区了字符 '1'与数值1是有区别的。数值1的值就是1,但是,字符'1'的值是它的ASCII值,是49这个数值。

5.2 整数类型

       在自然数中,100、1、99这样的数值称为“整数”。那么,在C语言中,提供了相关的类型来存放整数值。

       C语言提供了关键字short、int、long表示整数类型,可以定义整数变量。例如588数值,是一个整数值,那么,可以存放在整数类型变量中。测试例子如下:

#include <stdio.h>            //包含头文件, 为了使用printf()函数;

int main()                           //定义程序的主函数, 就是程序的入口地址;

{                                               //主函数的开始标记;

       short x = 100;      //定义short类型变量x, 并给变量赋值 100 数值;

       int y = -90;   //定义int类型变量y, 并给变量赋值 -90 数值;

       long z = 88888;   //定义long类型变量z, 并给变量赋值 88888 数值;

       printf("x = %d\n", x); //输出 x 变量的值;

       printf("y = %d\n", y); //输出 y 变量的值;

       printf("z = %d\n", z); //输出 z 变量的值;

 

       return 0;                      //返回结束状态;

}                                               //主函数的结束标记;

 

       程序运行的输出结果如下:

mylinux@ubuntu:~/src/test$ gcc test.c -o exe

mylinux@ubuntu:~/src/test$ ./exe

x = 100

y = -90

z = 88888

       可以看到,在C语言中,提供了关键字short、int、long可以定义整数类型,而且是有符号数类型,所以,在变量y中,可以赋值负数。

       注意char数据类型虽然是字符类型,但是,它由1个字节的存储空间,1个字节的空间可以存储8位二进制数据,可以表示为一个整数值。

       在C语言中,关键字char、short、int、long数据默认都是有符号类型,所以存储的数据可以表示负数。例如char类型的变量,容量是一个字节,最高位是符号位,剩余的7位是数据位。能够表示最大的数值是0111 1111,十进制就是127。最小的数值是1000 0001,十进制就是-127。

更多的交流可以加QQ:1523520001,微信:13926572996,备注:linux编程;

学习、分享更多的linux C/C++ 编程知识。

转载地址:https://mylinux.blog.csdn.net/article/details/89203631 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C语言基本数据类型(2)
下一篇:变量名与存储空间

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月12日 00时22分15秒