题目
编写程序,分别创建双精度浮点数、32位整数、逻辑布尔值和字符数组,输出它们的变量类型(class)与内存字节大小。
输入格式:无需外部输入,程序内部构造不同基础数据类型。
输出格式:分行输出各变量的名称、类型名称、占用字节数(bytes)。
数据范围与约定:内置数据类型:double, int32, logical, char。
思路与算法
1. 默认双精度机制
Octave / MATLAB 中任何裸写的数字(如 x = 42)默认均为 64 位双精度浮点数 double(占用 8 字节),即使写的是整数也是如此。显式指定整型需使用 int32()、uint8() 等类型转换函数。
2. 类型与大小内省
使用 class(var) 可获取类型字符串;使用 sizeof(var)(Octave 支持)或结合 whos 结构可获取字节开销。
3. 逻辑与字符内存logical 变量在内存中每个元素占用 1 字节。MATLAB 的 char 通常按 2 字节(UTF-16)计;本站 Octave 运行时 sizeof('A') 为 1 字节,示例按 Octave 实测。
完整程序
% Octave / MATLAB 第9题:变量类型与内存检测
v_double = 3.14159; % 默认 double (8 字节)
v_int32 = int32(100); % 显式 32 位整型 (4 字节)
v_logical = true; % 逻辑型 (1 字节)
v_char = 'A'; % 字符(Octave 下 sizeof 为 1 字节)
fprintf("变量 v_double: 类型 = %-8s | 字节 = %d\n", class(v_double), sizeof(v_double));
fprintf("变量 v_int32: 类型 = %-8s | 字节 = %d\n", class(v_int32), sizeof(v_int32));
fprintf("变量 v_logical: 类型 = %-8s | 字节 = %d\n", class(v_logical), sizeof(v_logical));
fprintf("变量 v_char: 类型 = %-8s | 字节 = %d\n", class(v_char), sizeof(v_char));运行示例
输出:
变量 v_double: 类型 = double | 字节 = 8
变量 v_int32: 类型 = int32 | 字节 = 4
变量 v_logical: 类型 = logical | 字节 = 1
变量 v_char: 类型 = char | 字节 = 1