栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C primer plus学习笔记 —— 1、基本数据类型详解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C primer plus学习笔记 —— 1、基本数据类型详解

文章目录
    • 基本数据类型概述
      • 关键字
      • 字符类型
      • 布尔类型
      • 整型
      • 浮点型
      • 复数和虚数浮点数
    • 整型
      • 八进制和十六进制
      • 声明其他数据类型
      • 数字常量存储形式
      • 整数溢出
      • 可移植类型
    • 浮点数
      • 浮点数上下溢出
        • 上溢
        • 下溢
      • 浮点数有效数位
      • 最大值
    • 字符

基本数据类型概述

计算机存储方式都可归结为两大类型:整数型和浮点型。
概念:

  1. 位bit,最小存储单元,只能存储0或者1,计算机内存基本构建块
  2. 字节byte,计算机存储单位,1byte=8bit。1byte有2的8次方种可能的01组合,所以1个字节可以表示数值范围0~255或者一个字符
  3. 字word,设计计算机给定的存储单位,一般一个word长度为32bit或者64bit,也就是我们所说的32位机或者64位机,越大则数据转移速度越快。
关键字

关键字11个:int, short, long, signed, unsigned, char, float, double, _Bool, _Complex, _Imaginary

字符类型

char : 1byte

布尔类型

_Bool : 1bit

整型

整型分为有符号和无符号,分别用signed和unsigned修饰

  1. int : 2 or 4 byte
  2. short (int) : 2 byte
  3. long (int) : 4 or 8 byte
  4. long long (int): 8 byte or more
浮点型
  1. float : 4byte 可精确表示至少6为
  2. double : 8 byte 只少精确表示10位
  3. long double: 16byte
复数和虚数浮点数

float _Complex
double _Complex
float _Imaginary
double _Imaginary

整型

没有小数部分的数
下图为在计算机中的存储方式


变量声明的时候就已经创建内存空间了。赋值的时候只是讲值写入该空间。

八进制和十六进制

C语言假定整形常量是十进制数。
但是许多人喜欢使用八进制或者十六进制数,当然在计算机中,比如十进制12,他的八进制是014.他的十六进制是0xC。他们在计算机中都是二进制存储都是1100。对计算机而言这些这个数都是1100,只是他们展现出来让程序员看到时是不同的。
十六进制表示法为0x前缀
八进制表示法用0前缀

使用八进制和十六进制的好处是:十六进制每一位正好是二进制的4位,八进制每一位正好是二进制的3位。
比如:十六进制的0x35用二进制表示为0011 0101。其中0011正好是十六进制的3,0101正好是十六进制的5.直接拼上就可以了。八进制035,则用三位拼,二进制表示为011 101。这种转换非常方便
但是如果十进制就不行了,比如十进制的35,必须使用辗转相除法来得到二进制数,就不直观。

声明其他数据类型

数字常量存储形式

通常数字常量比如223被存储为int类型,如果比较大的数字,超出int类型范围则会被存储为long类型,不够则用unsigned long,还不够则long long

八进制和十六进制常量被视为int类型。如果不够则递增。
可以使用后缀来指明常量类型为long比如45L

整数溢出

溢出是未定义行为,系统不会通知用户。
在超过最大数值时,unsigned int变量会从0开始,而int类型变量则从-2147483648开始。

可移植类型

头文件中包含了可移植类型。
目的:确保类型在各种系统中功能相同,也就是占用字节大小相同。
比如int32_t,他表示整数类型的宽度正好是32位也就是4字节。他在使用32位的系统中会作为int类型别名占4字节。而在int位16位的系统中,int32_t会作为long的别名,保证也占4字节。

浮点数

正常情况下各种整型类型已经对于软件足够了。但是对于金融或者数学程序,浮点数的作用就非常大。
这篇文章介绍浮点数精度和范围写的非常详细。
https://www.csdn.net/tags/NtjakgysMTQ1MTItYmxvZwO0O0OO0O0O.html


在计算机中,用指数记数法也就是上图第三列,来表示科学计数法。

浮点数在计算机中被分为整数部分和小数部分来存储。


由上图可知,8位用于表示符号和指数,剩下24位表示小数。用的是e计数法。
double类型64位,一些系统将多出的32位全部用作表示小数部分,就提高了精度。他至少能表示13位有效数字。

浮点数表示的范围比整数更大,但是他的精度没有int型那么大,对于整数 16777216 貌似是一个边界,超过这个数的数字开始float就不能精确表示了
是如果把333333333333333(15个3)用float来存储,用cout输出的值是333333317812224.000000,可以看到确实保证了前7个有效位是精确的。

浮点数上下溢出 上溢

比如

这时会发生上溢,也就是数字过大,超过当前类型表达范围,这时该变量会变成一个极大值,显示位inf或者infinity.

下溢

表示损失的类型全精度的浮点值低于正常的浮点值。

浮点数有效数位

最大值

#include
#include // FLT_MAX
#include // INT_MAX

int main()
{
printf(“%f n”,FLT_MAX);
printf(“%d”,INT_MAX);
return(0);
}

字符

char实际是整数类型。他存储的实际上是整数而非字符。
计算机使用数字编码来处理字符。用特定的整数来表示特定的字符。
比如在最常用的ASCII字码中,整数65代表的就是字符’A’。标准ASCII码范围是0 ~ 127。char是一个字节,可表示范围是-128 ~ 127或者0 ~ 255。所以表示ASCII码绰绰有余。
声明字符变量的方式

由于字符实际上是按整数存储的。
所以初始化
char grade = 65也是可以的,他和char grade = 'A'一样。但是他是一种不好的编程方式,不易理解。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971826.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号