------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
C语言有丰富的数据类型,因此它很适合用来编写数据库,如DB2、Oracle都是C语言写的。
C语言的数据类型大致可以分为下图中的几类:
一、变量
跟其他语言一样,C语言中用变量来存储计算过程使用的值,任何变量都必须先定义类型再使用。为什么一定要先定义呢?因为变量的类型决定了变量占用的存储空间,所以定义变量类型,就是为了给该变量分配适当的存储空间,以便存放数据。比如你是char类型,我就只给你分配1个字节就够了,没必要分配2个字节、3个字节乃至更多的存储空间。
1、局部变量的使用
C语言的局部变量跟Java语言的局部变量的定义有所不同,你声明看一个局部变量后,没有经过初始化赋值是可以使用的。
#include <stdio.h>
int main()
{
int b;
printf("%d\n",b);
return 0;
}
但这是很危险的,不建议这样做。因为系统会随意给变量b赋值,得到的是垃圾数据。因此,局部变量还是必须先进行初始化赋值,然后再使用,这样才是最安全的做法。
2、char类型的取值范围
char类型的取值范围是ASCII码字符表或者是-128~127之间的整数,因此定义char类型数据有两种方式
#include <stdio.h>
int main()
{
char c1 = 'A';
char c2 = 65;
}
3、char类型的数据只能存放一个字符
汉字或者字符串需要用字符数组来存储,因为一个汉字至少占了2个字符(编译器不同),一个字符串是由一个或者多个字符组成的。
#include <stdio.h>
int main()
{
char c1 = '陈';//错误,一个汉字至少占两个字符
char c2 = '111';//错误,只能存一个字符
char c3 = "222";//错误,字符串应存在字符数组里面
}
二、类型修饰符
有以下4种类型修饰符:
short 短型
long 长型
signed 有符号型
unsigned 无符号型
short 短型
long 长型
signed 有符号型
unsigned 无符号型
1、用法演示
#include <stdio.h>
int main()
{
//短整型
//下面两种写法等价
short int a1 = 1;
short a2 = 1;
//长整型
//下面两种写法等价
long int b1 = 2;
long b2 = 2;
//可以连续使用两个long
long long c = 3;
//有符号的整型
//下面两种写法等价
sign int d1 = 4;
signed d2 = 4;
//无符号的整型
//下面两种写法等价
unsign int e1 = 5;
unsign e2 = 5;
//两种修饰符也可以同时使用
//有符号的短整型
signed short int f1 = 6;
//无符号的长整型
unsigned long int f2 = 6
}
2、short和long
(1)、short和long可以提供不同长度的整型数,也就是可以改变整型数的取值范围,比如short的取值范围是-32768~32767,long的取值范围就是-2147483648~2147483647
(2)、数据的存储长度也会跟着变化。比如,在64位编译器环境下,short占2个字节(16位),int占4个字节(32位),long占8个字节(64位)。不同编译器环境下,取值范围和占用的长度是不一样的,ANSI \ ISO制定了以下规则:
(2)、数据的存储长度也会跟着变化。比如,在64位编译器环境下,short占2个字节(16位),int占4个字节(32位),long占8个字节(64位)。不同编译器环境下,取值范围和占用的长度是不一样的,ANSI \ ISO制定了以下规则:
short跟int至少为16位(2字节)
long至少为32位(4字节)
short的长度不能大于int,int的长度不能大于long
char一定为为8位(1字节),毕竟char是我们编程能用的最小数据类型
3、sign和unsign
(1)、signed代表有符号,包括正数、负数和0;unsigned代表无符号,只包括正数和0。比如,signed的取值范围是-32768~32767,那么unsigned的取值范围是0~65535不同的编译器有不同的取值范围
(2)、signed和unsigned的区别就是它们的最高位是否要当做符号位,并不会像short和long那样改变数据的长度,即所占的字节数,
(2)、signed和unsigned的区别就是它们的最高位是否要当做符号位,并不会像short和long那样改变数据的长度,即所占的字节数,