求解此五题c语言题目答案

1.intx=2002,y=2003;printf("%d\n",(x,y));为什么输出为2003?2.若输出结果为16.00,求空行的程序的值?floatx=____... 1.

int x=2002,y=2003;

printf("%d\n",(x,y));

为什么输出为2003?

2.

若输出结果为16.00,求空行的程序的值?

float x=______,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

标准答案是6.6,而我算出来不是?

3.

main()

{

unsigned short a=65536;

int b;

printf("%d\n",b=a);

为什么输出为0?

4.

main()

{

int p=30;

printf("%d\n",(p/3>0?p/10:p%3));

}

为什么结果是3,请着重解释下p/3>0?p/10:p%3的意思?

5.

main()

{

char x=0xFFFF;

printf("%d \n",x--);

}

为什么输出为-1?

谢谢啦!~
第二题补充 int a=9,b=2
展开
 我来答
coding_li
2011-06-28 · 超过16用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:44.3万
展开全部
第一题你那个(x,y)是逗号运算,所以只会把最后一次值作为整个运算的值。
第二题不知道a,b是什么值,你在计算的时候要注意z是float类型,如果a为float类型,要把2转换掉,再进行运算。因为float级别高,所有低于它的要转换成它的类型。
第三题是a 是无符号,而b为有符号数,把一个无符号数给一个有符号数,如果这个无符号数特别大,那么接收它的会变成小的,具体你可以看看《深入理解计算机系统》,还是具体要理解在计算机系统中数值的表示方法。不懂可以再问,我再答详细点,因为我们马上要断网了……
第四题:p/3>0?p/10:p%3 ,你这里是三目运算符,如果p/3>0,那么p/10,反之执行后面的。所以p/3=10>0,所以执行p/10=3,后面的不执行了,你要理解这运算符的作用。
第五题:0xFFFF表示成二进制为 1111 1111 1111 1111 ,因为为负数,所以实际值为 1000 0000 0000 0001,即为-1,你那打印语句,x先使用再自减,所以先打印为-1,之后x为-2了……
追问
第二题补充 int a=9,b=2。

还有为什么0xFFFF表示成二进制为 1111 1111 1111 1111 ,因为为负数,所以实际值为 1000 0000 0000 0001,即为-1,你那打印语句,x先使用再自减,所以先打印为-1,之后x为-2了……
为什么是负数?
追答
第二题我把过程快速写一下吧、因为我下午有英语考试
若输出结果为16.00,求空行的程序的值?
int a=9,b=2。
float x=______,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
标准答案是6.6,而我算出来不是?
注:你打印的格式是保存两位小数
a/2=4, b*x/y=2.0*x/1.1 ,
所以z=4+2.0*x/1.1+0=16.00
所以x=(16.00-4.00)*1.1/2.0=6.6,你在做这种计算的时候,要注意两个数作运算时的类型,要转换。

你问的第二问是:0xFFFF,F是十六进制,转换成二进制为1111 1111 1111 1111,最高位为1,所以为负数,你应该了解的吧,然后它以补码的形式存储的,要转换成原码,所以为1000 0000 0000 0001,转换成机器码为-1,然后就是自增自减,你要弄明白x--和--x的区别就OK 了
像十六进制中:0~7代表为正数(左边第一位为0),8~F代表负数,因为它们的最高位(左边第一位)为1
lsgo5o2
2011-06-28 · TA获得超过214个赞
知道小有建树答主
回答量:219
采纳率:54%
帮助的人:137万
展开全部
1.逗号运算符的结果是最后一个表达式的值,为y=2003;
2.a,b的值不知道。。。。。
3.因为b不等于a,所以结果是0;
4.p/3>0?p/10:p%3:p/3=10>0为真,由问号运算符规则,结果为p/10=3;
(a?b:c,是三目运算符);
5.x=1111 1111 1111 1111(二进制),x--后,x=1111 1111 1111 1110(二进制),
按整型有符号数输出,x为负,按补码运算规则(-x)=0000 0000 0000 0001(二进制)=1(十进制),所以,输出-1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lqwangjing
2011-06-28 · TA获得超过324个赞
知道答主
回答量:49
采纳率:0%
帮助的人:58.1万
展开全部
一楼回答基本上都是对的我来补充下第三题
a是无符号short型的,在大多数操作系统中a为16bit
16bit能表示的最大数为65535 而65536会让a溢出,溢出后a的值为零
所以a在赋值给b后,打印出来的是零
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式