CAPL 编程系列教程的第四期内容,接续上一期,本期详细讲解 CAPL 中的简单数据类型,包括整数、浮点数和字符类型
CAPL 编程系列教程 - 第四期:简单数据类型详解
一、 课程回顾与本期目标
- 回顾: 上一期学习了变量定义基础和
write()函数。 - 本期目标: 详细讲解 CAPL 中的简单数据类型,主要分为整数、浮点数和字符三大类
。 - 基础概念:
- 计算机中数据以二进制比特(0 或 1)存储
。 - 8 个比特组成一个字节(Byte),是存储的基本单位
。 - 理解数据类型主要关注其占用的字节数和能表示的数据范围
。
- 计算机中数据以二进制比特(0 或 1)存储
二、 整数类型 (Integer Types)
- 分类:
- 无符号 (Unsigned): 只能表示 0 和正整数
。 - 有符号 (Signed): 可以表示负数、0 和正整数
。
- 无符号 (Unsigned): 只能表示 0 和正整数
- 无符号整数类型:
byte:- 占用 1 个字节 (8 比特)
。 - 范围:0 到 255 (2^8 - 1)
。 - 示例:
byte b1 = 192;
- 占用 1 个字节 (8 比特)
word:- 占用 2 个字节 (16 比特)
。 - 范围:0 到 65535 (2^16 - 1)
。 - 示例:
word w = 1923;
- 占用 2 个字节 (16 比特)
dword(double word):- 占用 4 个字节 (32 比特)
。 - 范围:0 到 约 42 亿 (2^32 - 1)
。
- 占用 4 个字节 (32 比特)
qword(quad word):- 占用 8 个字节 (64 比特)
。 - 范围:0 到 2^64 - 1
。
- 占用 8 个字节 (64 比特)
- 有符号整数类型:
int:- 占用 2 个字节 (16 比特)
。 - 范围:-32768 到 32767
。 - 示例:
int i = -3;,int i2 = 32000;
- 占用 2 个字节 (16 比特)
long:- 占用 4 个字节 (32 比特)
。 - 范围:约 -21 亿 到 +21 亿
。 - 示例:
long l = 1932000;(如果用int定义此值会超范围)。
- 占用 4 个字节 (32 比特)
int64: (未在示例代码中明确使用,但属于整数类型) 通常占用 8 个字节,用于表示更大范围的有符号整数。
- 数据溢出与截断:
- 常量定义: CAPL 中直接写的数字常量(如
256)默认占用 4 字节内存空间。 - 赋值截断: 当把一个超出目标变量类型范围的常量或值赋给该变量时,会发生截断
。系统只保留常量二进制表示中符合目标类型字节数的部分(通常是低位字节) 。 - 示例:
byte b2 = 256;256 的 4 字节二进制表示是...00000001 00000000。byte只占 1 字节,截取低位的00000000,所以b2的值实际为 0。 byte b3 = 300;300 的二进制低位字节是00101100(十进制 44),所以b3的值实际为 44。
- 建议: 选择足够大的数据类型以避免溢出,不要依赖溢出截断的行为
。
- 常量定义: CAPL 中直接写的数字常量(如
- 输出: 无论是无符号还是有符号整数,通常都使用
%d占位符以十进制形式输出(除非需要%x/%X输出十六进制)。
三、 浮点数类型 (Floating-Point Types)
- 类型:
floatdouble
- 特点:
- 在 CAPL 中,
float和double功能完全一致,都占用 8 个字节。 - 用于表示带小数点的数值
。 - 可以表示正数和负数
。
- 在 CAPL 中,
- 精度:
- 最高精度约为 17 位有效数字 (小数点前后的总位数)
。 - 超出此精度的部分会被舍弃或不精确
。 - 示例:
float f02 = 12345678901234567890LL;(常量后加LL表示 64 位/8 字节常量) 输出时,只能精确显示约 17 位。 float f03 = 1.2345678901234567890;输出时,小数点后约 16 位是准确的。
- 最高精度约为 17 位有效数字 (小数点前后的总位数)
- 应用: 车载领域中小数点后精度要求通常不高,一般够用
。 - 输出: 使用
%f占位符输出,可用%m.nf控制精度。
四、 字符类型 (Character Type)
- 类型:
char。 - 特点:
- 占用 1 个字节
。 - 用于表示单个字符,如字母、数字、标点符号等
。
- 占用 1 个字节
- 赋值: 使用单引号
''将字符括起来赋值。 - 示例:
char c1 = 'X';,char c2 = '9';,char c3 = '!';
- 示例:
- 注意: 字符
'9'和数字9是不同的。字符'9'只是一个符号,没有算术意义。 - 输出: 使用
%c占位符输出。
五、 总结与后续
- 本期详细介绍了 CAPL 的简单数据类型:整数(区分有无符号及不同字节大小)、浮点数(
float/double)和字符(char)。 - 强调了数据类型与内存占用、表示范围、精度及溢出截断的关系。
- 下一期将讲解复合数据类型,如数组等
。