【题目链接】
【题目考点】
1. 数据类型原理
2. 类型转换
【解题思路】
a = 32768;
b = a;
printf("%d %d\n", a, b);//输出32768 -32768
问a,b的类型。
已知选项中没有无符号类型。
- 判断a的类型
- short型变量可以表示的范围是-32768~32767,不能表示32768。因此a不是short型。
- a能通过%d输出,说明a是整型,选项中剩下的整型只有int。因此a是int类型。
- 判断b的类型
- b可以表示-32768,而且能以%d输出,说明b只能是int或short类型。
- 将32768赋值给b后,b的值不是32768,说明b的类型不能表示32768,因此b是short型。
该题选D C
- 32768在内存中的表示形式
32768用二进制表示,为1000 0000 0000 0000
在short型中,1000 0000 0000 0000表示的值为-32768
在int型中,0000 0000 0000 0000 1000 0000 0000 0000表示的值为32768
【题解代码】
解法1:
#include <bits/stdc++.h>
using namespace std;
int main()
{
cout<<"D C";
return 0;
}