【无标题】

有两个变量a和b,在执行了如下代码后: a = 32768; b = a; printf("%d %d\n", a, b); 输出两个数:32768 -32768。 请问a和b分别是以下哪种类型?(提示:b和a的二进制形式是一样的。无符号数用%d输出结果必然是非负的。b输出为负数,说明其符号位为1)(BC

  • A.

    其他三个选项都不对

  • B.

    unsigned short,short

  • C.

    int,short

  • D.

    unsigned int, int

解析 :首先,可以肯定的是,a的类型除signed short(-2^15 ~ 2^15-1 , 2^15-1=32767)的各种整型百无禁忌,我们只考虑 b ; b 为有符号的二进制表示,而 b 如果为 int 的话,正好可以容纳 ,如何有负号呢 ?因此,我们考虑short(-32768~32767),32767(01111111 11111111),32768(10000000 00000000)(符号位为1,解释为负数,即-32768)

补充 : int有4个字节(32个比特位),而short只有2个字节(16个比特位)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值