| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C语言基本概念----类型 -> 正文阅读 |
|
[C++知识库]C语言基本概念----类型 |
存储在对象中的值或由函数返回的值,其含义由访问它的表达式的类型决定。声明为对象的标识符是最简单的表达式,其类型就是声明时为标识符指定的类型。类型(types)分为对象类型(描述对象的类型)和函数类型(描述函数的类型)。在翻译单元内的不同点上,对象类型可能是不完整(缺乏足够的信息来确定该类型对象的大小)或完整(具有足够的信息)。 注:类型可以在整个翻译单元中不完整或完整,也可以在翻译单元内的不同点更改状态由不完整类型变为完整类型。 1. 整数类型? 1.1?bool类型 该类型的关键字在C99、C11、C17等标准中是_Bool,在即将发布的最新版本中是bool,我们用最新的关键字表示此类型。 bool类型和无符号整数类型都是标准无符号整数类型。该类型的变量取值为false或true,表示假和真,其长度(占用的字节数)取决于C实现,至少是1个字节。 1.2?字符类型 char、signed char和unsigned char这三种类型统称为字符类型。char类型与signed?char类型还是unsigned char类型具有相同的取值范围、表示和行为,这要取决于具体的实现。在gcc中,char类型与signed char类型的行为一致。尽管如此,我们一般不会说char类型就等同于signed char 类型。 声明为char类型的对象足够大,可以存储基本执行字符集的任何成员。如果基本执行字符集的一个成员存储在char对象中,则其值保证为非负。如果char对象中存储了任何其他字符,则生成的值由实现定义,但应在该类型中可以表示的值范围内。 《C Primer Plus 第6版(中文版)》对char类型的描述:char类型用于储存字符(如,字母或标点符号),但是从技术层面看,char是整数类型。因为char类型实际上储存的是整数而不是字符。计算机使用数字编码来处理字符,即用特定的整数表示特定的字符。美国最常用的编码是ASCII编码,本书也使用此编码。例如,在ASCII码中,整数65代表大写字母A。因此,储存字母A实际上储存的是整数65。 标准ASCII码的范围是0~127,只需7位二进制数即可表示。通常,char类型被定义为8位的存储单元,因此容纳标准ASCII码绰绰有余。某些系统,比如许多IBM的大型主机使用了另一种编码——EBCDIC码,但也在8位的表示范围之内。另外,一些国家的计算机系统可能使用他们国家自定义的编码。一般而言,C语言会保证char类型足够大,以储存系统(实现C语言的系统)的基本字符集。 许多字符集都超过了127,甚至多于255。例如,日本汉字(kanji)字符集。商用的统一码(Unicode)创建了一个能表示世界范围内多种字符集的系统,目前包含的字符已超过110000个。国际标准化组织(ISO)和国际电工技术委员会(IEC)为字符集开发了ISO/IEC 10646标准。统一码标准也与ISO/IEC 10646标准兼容。 1.3?标准整数类型 有5种标准的有符号整数类型,分别是signed char, short int, int, long int和long long int。 有6种标准无符号整数类型,分别是unsigned char、unsigned short int、unsigned int、unsigned long int、unsigned long long int和bool。 标准有符号整数类型和标准无符号整数类型统称为标准整数类型。 思考:char属于标准整数类型吗? 1.4?扩展整数类型 在某些C实现中定义了自己的有符号整数类型和无符号整数类型,一般称这些实现自定义类型为扩展有符号整数类型和扩展无符号整数类型,统称为扩展整数类型。 1.5?位精度整数类型 在即将发布的最新C标准中定义了位精度整数类型。位精度整数变量有无符号位精度整数类型和有符号位精度整数类型。 有符号位精确整数类型类型说明符为?_BitInt(N)?,其中N是整数常量表达式,指定用于表示该类型的位数,包括符号位。N的值不同则表示不同的类型。无符号位精确整数类型类型说明符为?unsigned?_BitInt(N)。 1.6?枚举类型 枚举由一组命名的整数常量值组成。每个不同的枚举构成不同的枚举类型。每个枚举类型应与字符、有符号整数类型或无符号整数类型兼容。枚举类型的选择由实现定义,但应能够表示枚举的所有成员的值。枚举类型是不完整类型,直到枚举声明列表的结束,即遇到“}”之后,枚举类型才是完整类型。 1.7?有符号整数类型和无符号整数类型 对于每种有符号整数类型,都有一个对应的(但不同的)无符号整数类型(用关键字unsigned指定),该类型使用相同的存储量(包括符号信息),并且具有相同的对齐要求。 标准有符号整数类型、位精度有符号整类型和扩展有符号整型统称为有符号整数类型。 标准无符号整数类型、位精度无符号整数和扩展无符号整数统称为无符号整数类型。 1.8?整数类型 char类型、有符号和无符号整数类型以及枚举类型统称为整数类型。 2. 浮点数类型 众所周知,浮点数据类型用于近似地表示某个具体范围内的实数。浮点运算得到的结果也只是一种近似结果。因此凡是需要精确记数的场合,都不应该使用浮点类型。并且在绝大多数情况下也不应该对浮点类型数据进行==、!=、<=、>=这样的运算。因为既然浮点数本身是一种近似表示,那么多数情况下做这种精确的等于比较是没有意义的。 另外,实数是一个数学概念,它包括有理数和无理数,有理数中又包括整数和分数,显然浮点数无法表示无理数和所有的小数,例如无法表示无限循环小数,也无法表示大于0.1小于0.2之间的所有实数。 2.1 标准浮点类型 有三种标准浮点类型,分别为float、double和long double。float类型的值集是double型值集的子集,double类型的值集是long double类型的值集的子集。 2.2?定点数类型 在即将发布的新标准中,增加了三种定点数类型,分别为_Decimal32、_Deicimal64和_Delicimal128。它们分别具有IEC 60559的decimal32、decimal64和decimal128格式。 注:IEC 60559规定decimal32为不需要算术支持的数据交换格式, 而_Decimal32是一种完全支持的算术类型。 2.3 实浮点类型 标准浮点类型和定点数类型统称为实浮点类型。 2.4?复数类型 有三种复数类型,分别是float _Complex、double _Complex和long double _Complex。 2.5?浮点数类型 实浮点数类型和复数类型统称为浮点类型。 3.?实类型、算术类型和基本类型 整数类型和实浮点类型统称为实类型(real types)。C能够处理的实类型数只是实数的一个有限子集。 整数类型和浮点数类型统称为算术类型(arithmetic types)。每个算术类型都属于一个类型域:实类型域包含实类型,复数类型域包含复数类型。 char类型、有符号和无符号整数类型以及浮点类型统称为基本类型(basic types)。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:09:16- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |