变量修饰符
DT晓 正式会员 2015-09-07 21:23:15
2954 5 0

unsigned short int a=0;

printf("%d",sizeof(a));


结果为2 是为什么?

printf("%hu",a-1);


为什么是65535?

问题来自: 变量修饰符

共 5 个回答

    嘿嘿大人 一代宗师 3167天前

    因为短整型是占两个空间啊,不然呢?

    最佳答案

    77. 资深会员 3167天前

    printf("%d",sizeof(a))”中问的是  sizeof (所占空间),所以答案为2(实数的短整型)。

    printf("%hu",a-1)”中问的是 a-1的值,unsigned short int 数值的取值范围就是0-65535,a-1则为循环所以就是最大值

    DT晓 正式会员 3167天前

    回复 77.


    谢谢 现在我明白了! 我想想问问这个a-1为循环是什么意思!

    DT晓 正式会员 3167天前

    回复 77.

    我可能明白了!

    a-1=-1

    因为

    -1 的二进制是 1111 1111 1111 1111

    又因为是无符号整形 所以最高位不是符号位 所以是 短整型最高位 是这样吗?

    77. 资深会员 3166天前

    回复 DT晓:对,就是没有-1,就默认成了短整型最高位

您还没有登录,所以不能回复该问题
我要回复

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

相关问题