您的位置:首页 > 编程语言 > C语言/C++

黑马程序员---【C语言】02基本数据类型

2015-03-30 15:17 309 查看
------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  无符号型

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制定了以下规则:

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那样改变数据的长度,即所占的字节数,

三、不同编译器环境下基本数据类型的存储长度

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息