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种派生类型做详细分析)

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

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

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

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

相关推荐
水水阿水水14 分钟前
第一章:C++是C语言的扩充(一)
linux·c语言·数据结构·c++·算法
Thomas_YXQ14 分钟前
Unity3D中基于ILRuntime的组件化开发详解
开发语言·网络·游戏·unity·unity3d
星迹日1 小时前
数据结构:包装类和泛型
java·开发语言·数据结构·笔记·泛型·通配符·包装类
鲤籽鲲2 小时前
C# 整型、浮点型 数值范围原理分析
开发语言·c#
重生之绝世牛码3 小时前
Java设计模式 —— 【行为型模式】命令模式(Command Pattern) 详解
java·大数据·开发语言·设计模式·命令模式·设计原则
晚风_END4 小时前
node.js|浏览器插件|Open-Multiple-URLs的部署和使用,实现一键打开多个URL的强大工具
服务器·开发语言·数据库·node.js·dubbo
_周游6 小时前
【C语言】_指针与数组
c语言·开发语言
SyntaxSage7 小时前
Scala语言的数据库交互
开发语言·后端·golang
疯狂小料7 小时前
Python3刷算法来呀,贪心系列题单
开发语言·python·算法
码力全開7 小时前
C 语言奇幻之旅 - 第14篇:C 语言高级主题
服务器·c语言·开发语言·人工智能·算法