其他数据类型存储空间大小

GitHub跳转原题关系图返回列表

用 sizeof 直接测量 bool 与 char 的类型宽度并按顺序输出,而不是把答案 1 1 当魔法数字硬编码

OJ: roj

题目 ID: 1018

难度:入门

标签:输入输出python

创建: 2026-09-29 13:31

更新: 2026-10-04 22:38

题目描述

分别定义 bool、char 类型的变量各一个,输出它们的存储空间大小(单位:字节)。本题无输入,输出一行两个整数并用一个空格隔开,依次为 bool 与 char 的大小;原题没有样例。

思路

题面问的是类型宽度而不是对象大小,所以直接对类型求 sizeof:char 按定义恰为 1 字节,bool 在常见编译器下同样占 1 字节。本题无输入,按先 bool 后 char 的顺序输出两个整数即可。

参考代码

Python 版:

python
#!/usr/bin/env python3
# Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
# rbook: -> https://rbook.roj.ac.cn  https://rbook2.roj.ac.cn
# rainboy的学习导航网站: https://idx.roj.ac.cn
# create_at: 2026-09-29 13:31
# update_at: 2026-09-29 13:31

import ctypes

# ctypes 的类型与 C 的内存布局一一对应,sizeof 给出的就是 C 里 sizeof() 的字节数。
# Python 自身没有 bool/char 的存储大小可言(bool 是 int 子类、没有 char 类型),
# 所以要"测量"就必须借用与 C 同布局的 ctypes,而不是硬编码 1。
BOOL_SIZE = ctypes.sizeof(ctypes.c_bool)  # 对应 C++ 的 bool,1 字节
CHAR_SIZE = ctypes.sizeof(ctypes.c_char)  # 对应 C++ 的 char,1 字节


def solve() -> None:
    # 无输入;两个常量按题面顺序用一个空格隔开输出
    print(BOOL_SIZE, CHAR_SIZE)


if __name__ == "__main__":
    solve()

C++ 版(同一算法):

cpp
/**
 * Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
 * rbook: -> https://rbook.roj.ac.cn  https://rbook2.roj.ac.cn
 * rainboy的学习导航网站: https://idx.roj.ac.cn
 * create_at: 2026-10-04 22:38
 * update_at: 2026-10-04 22:38
 */
#include <iostream>

using namespace std;

typedef long long ll;

int main() {
    // 用 sizeof 测量类型的存储宽度(单位:字节),不是对象大小
    ll bool_size = sizeof(bool); // bool 在常见编译器下占 1 字节
    ll char_size = sizeof(char); // char 按定义恰占 1 字节

    // 本题无输入,直接按先 bool 后 char 的顺序输出
    cout << bool_size << " " << char_size << endl;
    return 0;
}