C语言 Number 1 基本数据类型

数据类型的定义

c语言的数据分类

首先是针对C语言的数据类型做个整理 大致分为四个大类型

  1. 基本类型
  2. 枚举类型
  3. 空类型
  4. 派生类型

那么根据以上四个大类型 我们来一一的做一个分站式讲解

基本类型

基本类型其中大致分为两类 整型浮点型

整型

(我在基本类型后面都附上了字节长度,这里是指在64位编译器下的长度 32位和16位暂时不附)

整型包含:
基本整型 int (4字节)
短整型 short [int] (2字节)
长整型 long [int] (8个字节)
双长整型 long long [int] (8个字节)
字符型 char (1个字节)
布尔型 bool (1个字节或4个字节)

这里布尔型要拿出小笔画画重点 :
布尔型有两个值,而且只有两个值 就是true或者false。
boolean 1字节或者4个字节
如果使用boolean声明一个基本类型的变量时,那么该变量占4个字节,
如果使用boolean声明一个数组类型的时候,那么每个数组的元素占一个字节。

注:整型数据可在类型符号前面加修饰符:signed(有符号整数类型)和unsigned(无符号整数类型),若不指定则默认为"有符号类型"。

浮点型

浮点型分为两种单精度浮点型和双精度浮点型

  1. 单精度浮点型【 float(4个字节)】
  2. 双精度浮点型【double (8个字节)】

对于查看字节 我们可以用个代码来让它得到展示:

首先固定的格式:

cpp 复制代码
#include <id> ----->头文件
#include <notify> ---->头文件
using namespace std; //释放std命名空间中的变量名,函数名以及类型名,其中std是C++标准库的命名空间。
int main ()
{
  return 0;
}
cpp 复制代码
#include <cstdio>
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
	short x = 5;
	int a = 10;
	long b = 20;
	float c = 1.1;
	double d = 2.2;
	cout << "short占用的字节" << sizeof(x) << endl;
	cout << "int占用的字节" << sizeof(a) << endl;
	cout << "long占用的字节" << sizeof(b) << endl;
	cout << "flaot占用的字节" << sizeof(c) << endl;
	cout << "double占用的字节" << sizeof(d) << endl;
	return 0;
}

得到展示的值是

float和double的精度和范围
范围

float和double的范围是由指数的位数来决定。

float的指数位有8位,而double的指数位有11位,分布如下:
float

1bit(符号位) 8bits(指数位) 23bits(尾数位)
double

1bit(符号位) 11bits(指数位) 52bits(尾数位)

所以

float的指数范围为-127~+128

double的指数范围为-1023~+1024

并且指数的范围是按照补码 的形式来划分(什么是补码会在后期的文章当中关注持续每天更新)

而且其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。

精度

float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的"1",由于它是不变的,所以不能对精度造成影响。

float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;

double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。(能绝对保证15位没有问题)

枚举类型

枚举类型就只有枚举类型(enum)

有一个定义格式 :

cpp 复制代码
enum 枚举名{元素1,元素2};

那么没为什么要用枚举?

cpp 复制代码
#define MON  1
#define TUE  2
#define WED  3
#define THU  4
#define FRI  5
#define SAT  6
#define SUN  7

就例如上面的代码块看起来很复杂,但是利用枚举的方式就是:

cpp 复制代码
enum DAY{MON=1,TUE,WED, THU, FRI, SAT, SUN};

是不是简单的多?

但是这里要注意:第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推。

空类型

空类型 即是 void类型 :常用在程序编写中对定义函数 的参数类型、返回值、函数中指针类型 进行声明,(函数和指针也会在后期慢慢的给大家详细讲讲)可以表示一种未知类型,但是不能代表一个真实的变量。

下面代码都企图让void代表一个真实的变量,因此都是错误的代码:

cpp 复制代码
  void a; //错误
  void function(void a); //错误
  void function(void); //正确

void* :则为"无类型指针",可以指向任何类型的数据。(无类型指针我后面会说)

派生类型

在说派生类型前我们需要了解什么是面向对象 (划重点后面要考)

面向对象的主要特征:继承、封装和多态。

继承(派生):使一个类从现有的一个类中派生,而不用重新定义新类。

实质是用已有的数据类型创建新的数据类型,并保留已有的数据类型的特点。以旧类为基础创建新类,新类包含旧类的的数据成员和成员函数,并可以在新类中添加新的数据成员和成员函数。旧类被称为父类或基类,新类被称为派生类或子类。

以上代码块只是举例说明!

派生的一般表达形式

cpp 复制代码
 class 派生类名称标识符 : [继承方式] 基类名称标识符

        // [继承方式],继承的基类成员的方式:public、protected、private;:是继承关系运算符。

        {

        [访问控制修饰符:] //派生类的访问控制类型:public、protected、private

        [成员声明列表] //派生类新增成员列表,继承来的成员不用重新列举

        };

继承方式有3种,其决定3种派生类型:

分别为
public (公有型派生)
protected(私有型派生)
private(保护型派生)

访问控制修饰符也是此3种类型。(后期会针对3种派生类型做详细分析)

在代码命名的时候注意保留关键字 那么哪些是保留关键字呢 我们来看个表

不可出现于表中相同的命名!

今天的内容就到这里 明天会给大家开始说说数据于运算,每天更新,每天进步 。

"出发吧!伟大的程序员啊"

相关推荐
材料苦逼不会梦到计算机白富美30 分钟前
线性DP 区间DP C++
开发语言·c++·动态规划
java小吕布32 分钟前
Java Lambda表达式详解:函数式编程的简洁之道
java·开发语言
sukalot36 分钟前
windows C#-查询表达式基础(一)
开发语言·c#
一二小选手1 小时前
【Java Web】分页查询
java·开发语言
大G哥1 小时前
python 数据类型----可变数据类型
linux·服务器·开发语言·前端·python
vortex51 小时前
解决 VSCode 中 C/C++ 编码乱码问题的两种方法
c语言·c++·vscode
Code成立1 小时前
《Java核心技术 卷I》用户图形界面鼠标事件
java·开发语言·计算机外设
Xiao Fei Xiangζั͡ޓއއ1 小时前
一觉睡醒,全世界计算机水平下降100倍,而我却精通C语言——scanf函数
c语言·开发语言·笔记·程序人生·面试·蓝桥杯·学习方法
记录无知岁月2 小时前
【MATLAB】目标检测初探
开发语言·yolo·目标检测·matlab·yolov3·yolov2
远望清一色2 小时前
基于MATLAB身份证号码识别
开发语言·图像处理·算法·matlab