#include<stdio.h>
void main()
{
unsigned short int a,b,c;
a=b=c=65535;
printf("%u,%u,%u\n",a,b,c);
}

或者
#include<stdio.h>
void main()
{
unsign

展开全部
收起
4回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • Quinn的小确幸

    12人对此回答表示赞同

    程序2:unsighed short是16位,int是32位(正常的x86机子),用%d打印的话是按照32位来取得,a的值是65535总共16位,按照32位打印的话则高16位补0,低16位为原来的十六位 所以打印出来的值一样;程序4,因为short是有符号16位整数,所以65535的实际值是-1,按照%u无符号格式打印的话就是0取反即0xFFFFFFFF,换算成十六进制就是那个超大整数
    讲的比较粗略,有不懂可以私聊我
    展开
    12
    0回复
    发布于 5年前

    评论(0)

    收起评论

  • Luis

    10人对此回答表示赞同

    %u 输出格式只能对无符号数使用.
    展开
    10
    0回复
    发布于 5年前

    评论(0)

    收起评论

  • 幼稚鬼

    9人对此回答表示赞同

      你自学的非常认真,值得赞扬!也值得学习。我是60年代初的大学毕业生,是数学专业毕业,上学时没有学过计算机,所有的计算机知识都是自学的。所以深知自学的甘苦。对你很理解也很赞赏。
      无符号数是不分正负的,没有符号位,对短整数而言,所有的比特都用来表数。最大数是65535。输出时,%u是按无符号输出,%d是十进制整数输出,所以都输出65535。也就是说,第1、2、4都是如此。这不是巧合,而是理应如此。
      第3也是必然的,因为是短整形、十进制整形输出,计算机是补码存储,16个1中的最
    展开
    9
    0回复
    发布于 5年前

    评论(0)

    收起评论

  • 墨离尘

    7人对此回答表示赞同

    %u是无符号10进制输出 %d是整数10进制输出

    第二例中abc和一例中一样,本身就是无符号型,输出没错

    第三例中a,b,c是短整型,不是无符号型,输入的65535转换为二进制1111111111111111(16个1),最高位的1被系统看成是符号位(符号位为1是负数,为0是正数),因此是个负数,具体数值负数是按其补码存在(具体编码你可以看书)确实是-1的补码

    第四种输出4294967295=2的32次方-1
    你输出应该是%l
    展开
    7
    0回复
    发布于 5年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部