填空:类型转换1

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

由 32768 与 -32768 的转换结果判断 a 为 int、b 为 short。

OJ: noi_openjudge

题目 ID: ch0102-04

难度:入门

标签:类型转换python

日期: 2026-07-30 23:01

题意

判断两个 C/C++ 变量的类型:赋值后 a 输出 32768b 输出 -32768

思路

32768 超出了 16 位有符号 short 的最大值 3276732767,所以 a 必须是能保存它的 int,对应选项 D。把该位模式转为 16 位 short 后,最高位成为符号位,结果为 32768-32768,故 b 对应 C

Python 整数没有固定 16 位溢出,这一题考查的是 C/C++ 转换规则,Python 程序直接输出判断结果。

代码

Python代码

python
# a 必须能保存 32768,b 转为 16 位 short 后得到 -32768。
print("D C")

C++代码

这里保留原有的 C++ 参考实现。

cpp
/* 
 * short 2
 * 16bit
 * 0111111111111111
 * 32768
 * 1000000000000000
 * */
#include <bits/stdc++.h>
using namespace std;
int main(){
    printf("D C");
    return 0;
}

复杂度

时间复杂度和额外空间复杂度均为 O(1)O(1)

总结

先检查值是否超出候选类型范围,再用补码解释截断后的位模式,就能判断这类整型转换题。