C语言 Number 1 基本数据类型

数据类型的定义

  • c语言的数据分类
    • 基本类型
      • 整型
      • 浮点型
        • float和double的精度和范围
          • 范围
          • 精度
    • 枚举类型
    • 空类型
    • 派生类型
      • 派生的一般表达形式

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个字节)】

对于查看字节 我们可以用个代码来让它得到展示:
首先固定的格式:

#include  ----->头文件
#include  ---->头文件
using namespace std; //释放std命名空间中的变量名,函数名以及类型名,其中std是C++标准库的命名空间。
int main ()
{
  return 0;
}
#include 
#include 
#include 
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;
}

得到展示的值是
C语言 Number 1 基本数据类型_第1张图片

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)
有一个定义格式 :

enum 枚举名{元素1,元素2}

那么没为什么要用枚举?

#define MON  1
#define TUE  2
#define WED  3
#define THU  4
#define FRI  5
#define SAT  6
#define SUN  7

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

enum DAY{MON=1,TUE,WED, THU, FRI, SAT, SUN};

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

空类型

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

  void a; //错误
  void function(void a); //错误
  void function(void); //正确

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

派生类型

在说派生类型前我们需要了解什么是面向对象(划重点后面要考)
面向对象的主要特征:继承、封装和多态。
继承(派生):使一个类从现有的一个类中派生,而不用重新定义新类。
实质是用已有的数据类型创建新的数据类型,并保留已有的数据类型的特点。以旧类为基础创建新类,新类包含旧类的的数据成员和成员函数,并可以在新类中添加新的数据成员和成员函数。旧类被称为父类或基类,新类被称为派生类或子类。

C语言 Number 1 基本数据类型_第2张图片

C语言 Number 1 基本数据类型_第3张图片

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

派生的一般表达形式

 class 派生类名称标识符 : [继承方式] 基类名称标识符

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

        {

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

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

        }

继承方式有3种,其决定3种派生类型:
分别为
public (公有型派生)
protected(私有型派生)
private(保护型派生)

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

在代码命名的时候注意保留关键字 那么哪些是保留关键字呢 我们来看个表
C语言 Number 1 基本数据类型_第4张图片
C语言 Number 1 基本数据类型_第5张图片
不可出现于表中相同的命名!

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

“出发吧!伟大的程序员啊”

你可能感兴趣的:(c语言,开发语言)