关于c语言程序方面的问题

设有如下的数据描述:inta=4,b=-3;longintc;unsignedintd;floatx=65.789;charc1='A',c2='\375';则下列赋值表... 设有如下的数据描述:int a=4,b=-3;
long int c;
unsigned int d;
float x=65.789;
char c1='A',c2='\375';
则下列赋值表达式的值及产量的值是多少?(1)c=a (2)d=b (3)c2=b+c2 (4)c1=c1+c2 (5)c1=x (6)d=c2 (7)a=(long int)a+(unsigned int)b 最好能详细解答,答好加分
展开
 我来答
帮479题8050
2012-03-14 · 超过15用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:23.4万
展开全部
1)c=a ,等于4,这个没问题吧。

2)d=b; unsigned的取值范围是(0---65535),它不能表示负数。但在计算机中负数都以补码的形式存在,补码是原码按位取反后再加1,例如-3,它的原码3,二进制表示为(16位,和操作系统有关)0000000000000011,按位取反后位1111111111111100,再加1变成1111111111111101,-3以这种方式存储在计算机中。所以-3的二进制表示为1111111111111101,十六进制是FFFD,所以d=0xFFFD,十进制表示为d=65533

3)c2=b+c2 .c2='\375',这个是8进制,8进制375转换成十进制为253,所以 c2=253,由于char的取值范围是(-128,127),253越界。其实128就是-128, 129就是-127, 130就是-126,以此类推,253就是-3, c2=-3;所以 c2=b+c2=-3+(-3)=-6

4)c1=c1+c2 . 'A' ACSII转化为十进制为65, c1=c1+c2=65+(-6)=59

5)c1=x . c1=x=65, 这个取整,因为计算后的类型是等号左边c1的类型(char型)

6)d=c2, d=c2=65530,和第2题一样

7)a=(long int)a+(unsigned int)b ,这题我们可以用二进制(取4位)来计算,a=4,二进制为0100,b=-3(结果第二题得到),二进制表示为1101, 最后(0100+1101)=10001,因为第5位溢出,我们只取4位(0001),二进制为0001的十进制为1,所以最后结果为a=1;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式