解题思路:
有两个变量a和b,在执行了如下代码后:
a =32768;
b =a;
printf("%d %d\n",a,b);
输出两个数:32768 -32768
请问a和b分别是以下哪种类型?
A. bool B. char C. short D. int E. float F. double
printf("%d %d\n",a,b);要求a,b为整型,只有C、D是整形;
short数据长度16位,数值范围:-32768~32767
int数据长度32位,数值范围:-2147483648~2147483647
short超过32767,溢出;
计算机储存系统使用补码标识:
正数补码与原码相同,
负数补码除符号位其余各位与原码相反,然后+1;
32767的二进制数是0111 1111 1111 1111, 是一个正数
32768的二进制数是1000 0000 0000 0000,1表示的是负数,计算机就理解成这是个负数了,即-32768
注意事项:
参考代码:
#include<stdio.h>
int main()
{
printf("D C\n");
return 0;
}
0.0分
19 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复