关于一道c语言题目

 我来答
仉丹雍诗
2020-03-28 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:33%
帮助的人:848万
展开全部
你是在TC语言环境下吧?int占2个字节,k变量与char
c[2]用的地址是同一片地址。k
=
-7,-7分为两个字节存储,当你输出c[0]和c[1]时,c[0]就是k的低字节位,c[2]就似乎k的高字节。-7二进制比较难算,举个简单例子,如果k=1,则其二进制为00000000
00000001,此时c[0]
=
00000001,c[1]
=
00000000,输出就是1,0了。-7一样,自己转转就出结果,原理就是这样。
补充:
我说的是TC,楼主应该也是在TC环境下,要不int不会占用2字节。int本身应该跟系统有关系,32位系统就应该占用4字节。
union共同体不是占用同一片空间?请问在哪种环境下不是呢,我所知道的好像都是描述为用同一片空间存储不同类型的变量。
韶秀荣堵子
2020-04-10 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:25%
帮助的人:765万
展开全部
你是不是想得到k的前1个字节和后1个字节?但是,在C语言中,并没有硬性规定int有几个字节。short
int
一定是2个字节,long
int
是4个字节,但是int并没有说固定是几个字节。还有,C语言并没有要求共同体是同一片内存空间。所以,不同的编译器编译出的结果不同。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
姬傅香随娴
2019-05-23 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:31%
帮助的人:2309万
展开全部
我运行结果和你不一样
第一个是-7,因为两个变量公用一个地址空间,所以输出a.k的值,第二个输出值也是a.k,而-7用无符号八进制整数形式输出的377777777777,因为%o表示无符号的八进制整数
,不符合条件,所以会出现一个随机的数字
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
校连枝顾俏
2020-03-24 · TA获得超过3.6万个赞
知道小有建树答主
回答量:1.2万
采纳率:32%
帮助的人:826万
展开全部
这个问题不太好回答,
这个输出结果与编译环境有关
其一、int类型在16位,32位机上定义的字节数不同。
其二、编译器会有内存的大端存储模式还是小端存储模式的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式