一道C语言问题 会的人麻烦解释一下
以下程序段的输出结果是:()intk=32768;printf("%d",k);A0B-32768C-1D有语法错误,无输出这道题选B为什么请高手帮我分析一下!谢谢了!书...
以下程序段的输出结果是:()
int k =32768;printf("%d",k);
A 0
B -32768
C -1
D 有语法错误,无输出
这道题选B 为什么 请高手帮我分析一下!谢谢了!
书上的解释是int型数据类型能够表示的个数为65536
所以32768-65536=-32768 所以输出-32768 展开
int k =32768;printf("%d",k);
A 0
B -32768
C -1
D 有语法错误,无输出
这道题选B 为什么 请高手帮我分析一下!谢谢了!
书上的解释是int型数据类型能够表示的个数为65536
所以32768-65536=-32768 所以输出-32768 展开
展开全部
这个要从数据在计算机中的存储方式说起。
计算机中是以2进制补码形式存储数据的。
8位的机器中int型占2个字节,可存储的int范围为-32768~32767 。你的k=32768,存储到计算机中就是0x10000000 00000000(注意:最高位为符号位),这和-32768在计算机中存储的数据是一样的。所以输出的时候就会显示-32768 。
负数的补码算法见下面的衔接:
http://zhidao.baidu.com/question/83145029.html?si=1
计算机中是以2进制补码形式存储数据的。
8位的机器中int型占2个字节,可存储的int范围为-32768~32767 。你的k=32768,存储到计算机中就是0x10000000 00000000(注意:最高位为符号位),这和-32768在计算机中存储的数据是一样的。所以输出的时候就会显示-32768 。
负数的补码算法见下面的衔接:
http://zhidao.baidu.com/question/83145029.html?si=1
参考资料: http://zhidao.baidu.com/question/83145029.html?si=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
-32768
首先说一下楼上…0x打头是十六进制的标志
这个东西关键在于int的存储位数…而这个是与编译环境有关的…比较旧的编译环境中int是16位的…在新的如VC6中int是32位…你这个情况下的int应该是16位…32768即2^15…换成二进制是1000000000000000…在补码表示中就是-32768
首先说一下楼上…0x打头是十六进制的标志
这个东西关键在于int的存储位数…而这个是与编译环境有关的…比较旧的编译环境中int是16位的…在新的如VC6中int是32位…你这个情况下的int应该是16位…32768即2^15…换成二进制是1000000000000000…在补码表示中就是-32768
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-02-03
展开全部
和编译器中对int最大值的规定有关
可能是32768,也可能是-32768
就本题来讲,只能选B了
如果有32768这个选项,也得选上
可能是32768,也可能是-32768
就本题来讲,只能选B了
如果有32768这个选项,也得选上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为这个32768超出了INT类型的范围,将二进制的最高位置1了,而最高位是符号位,0为正,1为负。所以就为负数了!这个你最好去看一下计算机组成原理这方面的知识!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
整型数据长度为-32768至32767
32768大于32767
所以计算机自动加上负号显示
课本上有例题的
32768大于32767
所以计算机自动加上负号显示
课本上有例题的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询