关于C语言,一共三个问题,回答对者可以加分,
第一个问题,unsigned int a=65535,然后printf("a=%d",a)
显示的是-1,我想问一下换算方式,一定要些换算方式,最好怎么补码的说一下
第二个问题,在格式输出函数里面有这样的printf("%7.2d,%5.3d....")
这是什么意思啊,书上写的%m.ns是什么意思啊,M代表什么,N代表什么
第三个问题,我刚学到了程序设计,我想问一下各位老鹰们,C语言那些不是很重要,那些比较重要,比如单精度float是否经常用到,而且我初中没有上完,所以数学不好,想问一下这个重要么,我是一个非常努力并且有上进的,希望各位老鹰们能够指点我这个菜鸟,谢谢了
参考答案:the first one: int存储空间只占用两个字节即16个二进制码,[signed]用最高位存放符号,0正1负,所以数值范围-32768(2的15次幂)-32767,unsigned 16个二进制位全用来存放整数,所以范围是0-65535(2的16次幂减1)。因此相应的[signed]来储存的-1(由补码来实现,1的二进制码0000000000000001,15个0是用来占位的,相应的不码为1111111111111110,即0换1,1换0,在将补码加1),二进制码为1111111111111111;在unsigned中,16个1表示的是该类型存放的最大的数65535,计算机在还原时根据不同类型采用不同方式,前者按照叙述的逆运算求其二进制原码,后者本身就是存放数值的原码,无需转换。
the second one: %d输出的整形,这里.2是无意义的,不起作用的。小数点前的数字表示输出宽度,小与实际占用的位数时按实际宽度输出,多了在左边填充空格(右对齐),另一个表示保留小数位数,按四舍五入规则保留。
the third one: 学什么只在于学力——学习能力,而非学历——学习经历!加油吧!