zgfp.net
当前位置:首页 >> x=65535 printF >>

x=65535 printF

如果是C语言,x的值为-1。%d是有符号格式,65535被当作负数处理了

首先要明确一点就是,%d显示的是int型,也就是说不管你x是什么,它会把x当做int型来显示 先看一下unsigned int的65535和int的 -1是怎么表示的: unsigned int x = 65535;// 四字节,用2进制进制表示就是 1111 1111 1111 1111 int x = -1;//四字...

oxFFFF表示16位16进制的最大值,用二进制表示为1111 1111 1111 1111,十进制即65535。

写了个测试程序,结果是 65535;标准答案有问题吧。unsigned int (无符号的整型变量)的 范围为 0~65535。 你自己也可以写个测试的程序,程序跑一下就知道正确与否,望能采纳,谢谢!!!

应当用 0xffff 第一个是数字0 不是 字母 o %u是按 10进制 无符号 整型 输出数值。 0xffff 得 65535

0xffff是十六进制 0xffff=(Decimal)65535 即十进制的65535 printf("%u\n",x)就是输出x的值然后换行 所以会输出65535再换行

首先要搞清楚不同格式输出是怎么回事 格式字符 意 义 d以十进制形式输出带符号整数(正数不输出符号) o以八进制形式输出无符号整数(不输出前缀0) x,X以十六进制形式输出无符号整数(不输出前缀Ox) u以十进制形式输出无符号整数 f以小数形式输出单...

如果你输出为 %u,结果是65535 %d,表示你输出为int型,是有符号的 65535用二进制码表示是:1111 1111 1111 1111 最高位是1,所以是一个负数 先求(计算机)反码:1111 1111 1111 1110 所以原码为: 1000 0000 0000 0001 根据原码得出结果是:-1

把printf("%d\n",l);改成printf("%u\n",l);就可以了,你输出格式不对。d是带符号的常整型输出格式,u才是不带符号的常整型输出格式。至于,为什么是输出的是-1,原因是65535在计算机中是以二进制补码存储,65535的二进制是11111111-11111111(16...

因为你定义b=65535为short,转换为二进制为:1111...11,最高位1代表符号,为负数,因为当前计算机用补码存放数据,该数的负数为取反加1,将该数取反为000000000000,加1得到1,于是该数为-1,所以输出结果为-1

网站首页 | 网站地图
All rights reserved Powered by www.zgfp.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com