【C语言】数据类型

数据类型

在这里插入图片描述
1.基本类型
C语言里的基础数据类型

2.构造类型
简单来说,就是以基本类型的数据为基础,进行添加、删减、设计、包装等,设计出新的数据结构

3.指针类型
指针对于C语言来说非常重要,简单来讲,可以将指针看成某个值的内存地址

4.空类型
关键字:void
一般每个函数都有一个返回值,将其返回值返回以便使用。但是当你不想这个函数返回数值的时候,就可以使用空类型设定,这样就不会有返回值了

标识符

简单来说就是id
一个变量、函数、常量、数组等,你在定义的时候要给它们起个名字,起的这个名字就是标识符
但这个名字却不是能乱取的,C语言中有以下规定:

1. 所有标识符必须由字母或者下划线开头,不能以数字、符号开头

int ?num;   //错误定义
int 9num;
int num;    //正确定义
int _num;

2. 除了开头,其他任何位置都可以使用数字、下划线、字母

int a4d_f3;  //正确定义

3. 字母区分大小写

int A;  //这是两个完全不同的变量
int a;

4. 系统关键字不能定义

int int;  //错误

int、float之类是专门用来使用的系统关键字,不能定义,铁打的规矩

5. 定义的标识符,尽量通俗易懂,与你接下来写的代码相关,不然代码写长了,中间出了错,你再回过头看,自己也不知道自己写的是什么了

常量

常量对于大家应该不陌生了,常量就是指在程序运算中不会变化的量,主要分为以下三大类

常量
数值型常量
字符型常量
符号常量

整型常量

整型常量即整型常数,整型我理解为整数,如12,-413。
其中整型又分为长整型短整型符号整型无符号整型

  • 无符号即数前面没有正负号,即非负数
  • 长整型即32位,短整型即16位
    我们一般称的整型,即短整型

无符号短整型取值范围是:
2 0 到 2 16 − 1 2^0到2^{16}-1 202161

有符号短整型的取值范围是:
− 2 15 到 2 15 − 1 -2^{15}到2^{15}-1 2152151
无符号长整型取值范围是:
2 0 到 2 32 − 1 2^0到2^{32}-1 202321
有符号长整型取值范围是:
− 2 31 到 2 31 − 1 -2^{31}到2^{31}-1 2312311
为什么这样取呢?
在计算机中,以二进制存储、处理数据,非0即1。
短整型16位,意思是有16位单元格

0000000000000000

每个单元格存储一位数据,这个数据不是0就是1,因为有16位,按照排列组合,那么就有
2 16 2^{16} 216种排法
即取值范围,32位同理。

  • 八进制整数
    在常数前加上0进行修饰
num = 0123//在常数前加0代表八进制

以下是错误写法

num = 123;  //没有前缀0
num = 02129   //包含了非8进制数“9”
  • 十六进制
    在常量前面加0x为前缀,表示为十六进制
num = 0x13a;  //前缀加0x表示16进制
num = 0xA2;

以下是错误写法

num = 13a; //未加前缀0x
num = 0xG3; //出现非16进制数“G”

实型常量

实型=整数部分+小数部分
其中用小数点隔开,用以下两种方法来表示

  • 科学计数法
num = 12.35;
num = 0.65;
  • 指数方式
    当实型特别大或者特别小的时候,不利于表达,那么采用指数的方式来表达会非常方便。用字母e或者E进行指数表达,e后面跟的数即指数
    45e2=4500
    45e-2=0.45

字符型常量

1.字符常量

  • 字符使用‘   ’括起来,它表示一个符号,没有任何运算意义,可以想象它为一副画,一个模型
  • 字符常量只能包含一个字符,不是字符串。'A’是对的,而‘AB’就错了,超过一个字符,就可理解为字符串
  • 字符常量是区分大小写的,‘A’和‘a’代表不同的符号

2.字符串常量
字符串常量是“  ”括起来的若干字符序列。例如“hello world!”,这就是若干个字符串起来的字符串。若字符串里任何常量也没有,称为空串,长度为0。
C语言存储字符串变量的时候,系统会在末尾自动加一个"\0",作为字符串的结束标志位,例如"hello"在内存中存储的形式为

hello\0

转义字符

在C语言中打出“\n”,但是在运行时却看不到“\0”,按理来说它应该是属于字符串,那为什么看不到?
因为它是一种特殊的字符,称为转义字符
以反斜杠\开头,后面跟一个字符,表示特定的含义,如图

转义字符意义
\n回车换行
\t横向跳到下一制表位置
\v竖向跳格
\b退格
\r回车
\f走页换纸
\反斜杠“\”
单引号符
\a鸣铃
\ddd1~3位八进制所代表的字符
\xhh1~2位十六进制数所代表的字符

符号常量

使用一个自定义的符号来代替固定的常量值

#include <stdio.h>
#define Shu5 5
int main()
{
	int a,b;
	a = 3;
	b = Shu5 + 3;
	printf("%d",b);
		
	return 0;
}

这里使用Shu5来代替常量5进行运算,输出为
在这里插入图片描述

变量

整型变量

整形变量是存储整型数据的变量,一般有shortlong关键字进行修饰

类型关键字
有符号基本整型[signed] int
无符号基本整型unsigned [int]
有符号短整型[signed] short [int]
有符号短整型unsigned short [int]
有符号长整型[signed] long [int]
无符号长整型unsigned long [int]

[]为可选部分,在编写时可以省略掉的关键字。例如[signed] int,编写时可以直接写int

字节(byte):字节是计算机中数据处理的基本单位,习惯上用大写B 来表示,1B(byte,字节)= 8bit(位)

类型占用字节
有符号基本整型4byte
无符号基本整型4byte
有符号短整型2byte
无符号短整型2byte
有符号长整型4byte
无符号长整型2byte

实型变量

同实型常量一样,它也是浮点型数据
实型变量=整数+小数
实型变量分为单精度双精度长双精度3种类型

类型关键字占用内存
单精度类型float4byte
双精度类型double8byte
长双精度类型long double8byte

字符型变量

字符型变量存储字符常量的变量,将一个字符常量存储到字符变量当中,将该字符的ASCII码值(无符号)存储到单元内存中
字符型变量在内存中只占用一个字节(1byte)

变量的存储类别

1.auto变量
定义一个局部变量为自动,即每次执行到此,都产生新的变量,重新初始化。
我理解的就是不管如何运行,auto看成常量,因为每次执行到它,他都要释放之前的内存,重新分配内存空间。换句话说,这个auto定义的值,不管这次你用它进行了多少次加减乘除等等操作…下一次用的时候,它还是原来的值,我称之为无记忆功能。

#include <stdio.h>

void hanshu()
{
	auto int num = 1;
	num = num + 1;
	printf("%d\n",num);
}
int main()
{
	printf("第一次调用:");
	hanshu();
	printf("第二次调用:");
	hanshu();
		
	return 0;
}

在这里插入图片描述

2.stctic变量
在内部变量声明为static变量和在外部变量声明为static变量是不一样的,在局部变量来说,static变量的功能与auto变量的功能相反,我称之为具有记忆功能,上次是啥,这次调用的时候还是啥

#include <stdio.h>

void hanshu()
{
	static int num = 1;
	num = num + 1;
	printf("%d\n",num);
}
int main()
{
	printf("第一次调用:");
	hanshu();
	printf("第二次调用:");
	hanshu();
		
	return 0;
}

在这里插入图片描述
3.extern变量
extern成为外部存储变量。extern声明了程序中将要用到但尚未定义的外部变量。
一个工程都是由多个C语言文件组成,但是多个C语言文件里的某些变量多多少少会被其他文件的程序引用到,这时只需将被引用到的变量进行extern声明,即可在其他文件的程序使用。
例:A文件有num变量,但是现在B文件需要使用num变量,这时只需给变量num进行extern声明,即可在B文件中使用

混合运算

  • int只能与int运算,float只能与float进行运算等等…不可混算。如需混合运算,需要将不同类型的数据转化为同意类型,才能进行运算
long
double
float
unsigned
int
char,short
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值