关于一道c语言题目
4个回答
展开全部
你是在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共同体不是占用同一片空间?请问在哪种环境下不是呢,我所知道的好像都是描述为用同一片空间存储不同类型的变量。
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共同体不是占用同一片空间?请问在哪种环境下不是呢,我所知道的好像都是描述为用同一片空间存储不同类型的变量。
展开全部
你是不是想得到k的前1个字节和后1个字节?但是,在C语言中,并没有硬性规定int有几个字节。short
int
一定是2个字节,long
int
是4个字节,但是int并没有说固定是几个字节。还有,C语言并没有要求共同体是同一片内存空间。所以,不同的编译器编译出的结果不同。
int
一定是2个字节,long
int
是4个字节,但是int并没有说固定是几个字节。还有,C语言并没有要求共同体是同一片内存空间。所以,不同的编译器编译出的结果不同。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我运行结果和你不一样
第一个是-7,因为两个变量公用一个地址空间,所以输出a.k的值,第二个输出值也是a.k,而-7用无符号八进制整数形式输出的377777777777,因为%o表示无符号的八进制整数
,不符合条件,所以会出现一个随机的数字
第一个是-7,因为两个变量公用一个地址空间,所以输出a.k的值,第二个输出值也是a.k,而-7用无符号八进制整数形式输出的377777777777,因为%o表示无符号的八进制整数
,不符合条件,所以会出现一个随机的数字
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题不太好回答,
这个输出结果与编译环境有关
其一、int类型在16位,32位机上定义的字节数不同。
其二、编译器会有内存的大端存储模式还是小端存储模式的问题。
这个输出结果与编译环境有关
其一、int类型在16位,32位机上定义的字节数不同。
其二、编译器会有内存的大端存储模式还是小端存储模式的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询