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

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

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








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值