6个回答
2011-07-05
展开全部
这个u%是按无符号输出,而你这个变量就是按照无符号输出,当然是65535.
你期待的结果又是什么呢
还是不理解基础,你这个x变量里面存的数据,变成二进制表示就是
1111111111111111,十六个一,不考虑符号位,你说这个数变成10进制是多少?
肯定是转成10进制了,如果你按照%d输出,那么刚才那个数最高位的1就变成符号位了,1代表负数,而负数是以补码存放的,把它还原成原码需要减1再取反,刚才你那个数就变成了这样,1000000000001,最高位那个1不算数字,代表负数,那么这样输出的结果就是-1,而%u是无符号输出,最高那一位不当作符号位。就没有上面这些转换过程了。
另外,团IDC网上有许多产品团购,便宜有口碑
你期待的结果又是什么呢
还是不理解基础,你这个x变量里面存的数据,变成二进制表示就是
1111111111111111,十六个一,不考虑符号位,你说这个数变成10进制是多少?
肯定是转成10进制了,如果你按照%d输出,那么刚才那个数最高位的1就变成符号位了,1代表负数,而负数是以补码存放的,把它还原成原码需要减1再取反,刚才你那个数就变成了这样,1000000000001,最高位那个1不算数字,代表负数,那么这样输出的结果就是-1,而%u是无符号输出,最高那一位不当作符号位。就没有上面这些转换过程了。
另外,团IDC网上有许多产品团购,便宜有口碑
展开全部
%u是无符号,就是将最高位的符号位也做为值的一部分输出。如果输出语句为
printf("%u“, -1);
将会显示出一个很大的数,因为-1标志位在最高位,
printf("%u“, -1);
将会显示出一个很大的数,因为-1标志位在最高位,
追问
将最高位的符号位也做为值的一部分输出是什么意思?
追答
有符号有31位来表示值,低32为用来表示符号,而无符号,用32而表示值,
所以无符号数最大值比有符号数绝对值最大值要打一倍。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
格式化输出的一种格式,%u是指不带符号的十六进制整数,例如 int i=21,若是%d输出,则输出21,若是%u,则输出0x15。
追问
%u一定输出十六进制的数吗,不是吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是%u,u是unsigned(无符号)的第一个字母。输出格式控制 指输出的数据类型由百分号后面的字符所代表的数据类型决定 。比如%u指输出无符号数,其中无符号只无正负号,默认的是有符号数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
无符号整型 unsigned int
无符号长整型 unsigned long int 用 %ul
无符号长整型 unsigned long int 用 %ul
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询