求解以下这道难题。

发布时间:2019-09-02 17:08:10

有两个变量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


推荐回答

变量a是int类型,变量b是short类型

int类型是4个字节,32位

short类型是2个字节,16位

int类型和short类型的第一位均用于表示数值的正负

因此int类型能储存的最大的数是2^31-1=2147483648

short类型能储存的最大的数是2^15-1=32767

首先把32768储存在int类型的变量a里面就是0000 0000 0000 0000 1000 0000 0000 0000

第一个0代表这是一个整数

再储存到b里面时,由于只有16位,因此只取了后16位,即

1000 0000 0000 0000

第一个1代表这是一个负数

这个数就是-3276

(这里为什么是-32768呢,建议去看一看关于原码、补码和反码的知识)

选D,int,整型

都是D的啊

都看不懂是什么 没学问真可怕

应该是D int,应该b=a,为什么b=-a?

自己定义测试一下更好

答案应该是B

咨询一下你的老师吧

以上问题属网友观点,不代表本站立场,仅供参考!