企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
# 1.1、内置类型 C++ 初始的**内置类型**(built-in types)分为两类:算术的类型和一个特殊的类型 void。**void类型**不关联到具体的值,仅在某些特定场景下使用,通常用来表示一个函数没有返回值。 ## 算术类型 **算术类型**(arithmetic types)分为两类:整数类型(integral types)和浮点数类型(floating-point types),其中整数类型(int type)也包括字符类型(character type)和布尔类型(boolean type)。 [Reference: runoob-C++数据类型](https://www.runoob.com/cplusplus/cpp-data-types.html) ## 数值表示法 > 计算机通过二进制序列保存数据,每个二进制位称为一个位(bit),最小的可寻址单元称为比特(byte),一个比特等于8个位(1 byte = 8 bits)。 ### 机器码 **原码**:由符号位(正数为0,负数为1)和真值绝对值(二进制)表示。 表示范围为: `$ -2^{n-1}+1 \sim 2^{n-1}-1 $` 例,以8 bit字长为例,`$ [−74]_{原} = 1100\ 1010 $` **反码**:正数的反码与其原码相同;对于负数,其原码的符号位不变,数值位按位求反。 表示范围为: `$ -2^{n-1}+1 \sim 2^{n-1}-1 $` 例,以8 bit字长为例),`$ [−74]_{原} = 1011\ 0101 $` **补码**:正数的补码就是其本身,负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后加1(即在反码的基础上加1)。 表示范围为: `$ -2^{n-1} \sim 2^{n-1}-1 $` 例,以8 bit字长为例),`$ [−74]_{原} = 1011\ 0110 $` ### 表示方法 **整型变量**:采用补码表示,原因是补码形式效率最高。 `$ (-1) + (-127) = [1000 0001]_{原} + [1111 1111]_{原} = [1111 1111]_{补} + [1000 0001]_{补} = [1000 0000]_{补} $` `$ (1) + (-1) = [0000 0001]_{原} + [1000 0001]_{原} = [0000 0001]_{补} + [1111 1111]_{补} = [0000 0000]_{补} $` **浮点型变量**: * 单精度浮点型(float):1位符号(S),8位阶码(E),23位尾数(M); * 双精度浮点型(double):1位符号(S),11位阶码(E),52位尾数(M); `$ val = (-1)^S * 2^{E-0x3ff} * 1.M $`,其中 `$ 0 ≤ E ≤ 0x7ff $`,`- 0x3ff` 称为偏正值,使阶码即可正亦可负。 [Reference:zhihu-二进制浮点数](https://zhuanlan.zhihu.com/p/58731780) ## 常量 常量是固定值,在程序执行期间不会改变,又叫做**字面量**(literal)。常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。 [Reference: runoob-C++常量](https://www.runoob.com/cplusplus/cpp-constants-literals.html)