用 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;
}