两道c语言题
第一道:#include<stdio.h>voidmain(){unsignedshorta=-1,b=65536;printf("%d,%d\n",a,b);}第二道#...
第一道:
#include <stdio.h>
void main()
{
unsigned short a=-1,b=65536;
printf("%d,%d\n",a,b);
}
第二道
#include <stdio.h>
void main()
{
printf("%5.3f\n",123456.12345);
printf("%5.3f\n",123.12345);
}
求上面两道题的输出结果,还有原因,重点是原因,说明所得结果的原因,谢谢。 展开
#include <stdio.h>
void main()
{
unsigned short a=-1,b=65536;
printf("%d,%d\n",a,b);
}
第二道
#include <stdio.h>
void main()
{
printf("%5.3f\n",123456.12345);
printf("%5.3f\n",123.12345);
}
求上面两道题的输出结果,还有原因,重点是原因,说明所得结果的原因,谢谢。 展开
3个回答
展开全部
第一道:65535,0
我们首先要求-1的补码:一个负数的补码, 是它对应的正数的补码按位取反并在末位加1.
求-1的补码, 先看正1的补码。
正1的二进制数是0000000000000001, 它的补码是
1111111111111110, 然后末位加1, 就变成了1111111111111111,这正是65535对应的二进制数(PS:unsigned int 型的取值范围是0~65535),因此a输出是65535.
对于b我们知道65536超出了范围,因此装不下的那部分会被截断。
————————————————————————————————————
详细解释:http://blog.163.com/ztlchina@126/blog/static/8259771620094221023014/
第二道:123456.123
123.123
首先我们要知道:%5.3f是控制输出格式的
f表示输出浮点数,
5表示最小输出字符宽度为5位数,
3表示浮点数输出小数点后为3位数
因此答案不难理解了。
有什么不懂得,欢迎追问啊~~~~
我们首先要求-1的补码:一个负数的补码, 是它对应的正数的补码按位取反并在末位加1.
求-1的补码, 先看正1的补码。
正1的二进制数是0000000000000001, 它的补码是
1111111111111110, 然后末位加1, 就变成了1111111111111111,这正是65535对应的二进制数(PS:unsigned int 型的取值范围是0~65535),因此a输出是65535.
对于b我们知道65536超出了范围,因此装不下的那部分会被截断。
————————————————————————————————————
详细解释:http://blog.163.com/ztlchina@126/blog/static/8259771620094221023014/
第二道:123456.123
123.123
首先我们要知道:%5.3f是控制输出格式的
f表示输出浮点数,
5表示最小输出字符宽度为5位数,
3表示浮点数输出小数点后为3位数
因此答案不难理解了。
有什么不懂得,欢迎追问啊~~~~
追问
第二题不理解,%5.3f不是表示总位数是5位,小数点占3位吗。怎么输出那么多位呢?
展开全部
第一题:答案是:a=1,b=65535
原因:定义a和b为无符号的short整型,首先无符号,所以a=1,第二,本身short整型的输出范围是-32767到32767,但是因为是无符号的,所以是0到65535,而65536大于它,所以取最大值,65535
第二题:答案是:第一个输出:23456.123,以为输出要求为%5.3f,即整数位5位,小数位3位的浮点数。
第二个输出:空格空格123.123 因为输出要求跟上面一样,所以整数位应该有5位,因为整数位一共只有三位,所以前两位要用空格代替
原因:定义a和b为无符号的short整型,首先无符号,所以a=1,第二,本身short整型的输出范围是-32767到32767,但是因为是无符号的,所以是0到65535,而65536大于它,所以取最大值,65535
第二题:答案是:第一个输出:23456.123,以为输出要求为%5.3f,即整数位5位,小数位3位的浮点数。
第二个输出:空格空格123.123 因为输出要求跟上面一样,所以整数位应该有5位,因为整数位一共只有三位,所以前两位要用空格代替
更多追问追答
追问
第一题结果是:a=65535,b=0.
第二题结果是:123456.123,123.123。
追答
是我把题理解错了,楼下的答案是正确,你去看看吧
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一题涉及到了几种机器码的转换,建议你看下补码与原码的转换。
第二题就是输出格式控制符了
典型的新手,建议你好好打基础
第二题就是输出格式控制符了
典型的新手,建议你好好打基础
追问
我有看,但是还存在疑问,麻烦你帮忙 一下,说说为什么,谢谢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询