
初学C语言老师留道作业题#include<stdio.h> int main() { short a,b; a=32767; b=a+1; printf("%... 40
初学C语言老师留道作业题#include<stdio.h>intmain(){shorta,b;a=32767;b=a+1;printf("%d,%d\n",a,b);r...
初学C语言老师留道作业题#include<stdio.h>
int main()
{
short a,b;
a=32767;
b=a+1;
printf("%d,%d\n",a,b);
return 0;
}结果是什么?还有原理 展开
int main()
{
short a,b;
a=32767;
b=a+1;
printf("%d,%d\n",a,b);
return 0;
}结果是什么?还有原理 展开
6个回答
展开全部
定义 a b为有符号短整型,短整型在内存分配两个字节的空间,最高位表示符号位(1表示为正0表示为负)。可以表示的范围为-32768——32767(即1111111111111111~0111111111111111),a(内存表示为0111111111111111)加1后产生溢出,各位均向前进一位,所以b中存储的数字就为1111111111111111,就是-32768了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
变量a、b为短整型,其值范围是-32768~32767。此时a为最大,加1后超过范围,溢出,并不是得到32768。而是-32768。具体原因涉及到二进制数的运算。
因此,对于定义变量类型时,要注意数的大小及数据类型范围。此例中定义b为long型,可得正确结果。
因此,对于定义变量类型时,要注意数的大小及数据类型范围。此例中定义b为long型,可得正确结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结果是a=32767,b=32768!
原理就是输入a,b,然后复值给a,复值给b!最后输出
谢谢!
原理就是输入a,b,然后复值给a,复值给b!最后输出
谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询