int a=-2;unsigned b=1;unsigned c=a+b;c=?

[复制链接]
查看11 | 回复1 | 2009-10-8 03:41:37 | 显示全部楼层 |阅读模式
新手就是麻烦 爱钻牛角尖 我也是新手我学理论跟新语言的时候遇到这些比较繁琐的我就先放着一个项目练练手 基本就解决了
回复

使用道具 举报

千问 | 2009-10-8 03:41:37 | 显示全部楼层
你要看看各类型的数据转换了int与unsigned混合运算,int共有16位,其中一位表示符号所以-2转成unsigned后就是1111 1111 1111 1101=655341+65534=65535,如果此数转换成int就变成-1;现在我们来看楼主的疑问你的输出格式是printf("%d",c);%d表示是int数输出,65535转换成int的当然就是-1无符号整型输出的表示法为%u;改成printf("%u",c);结果就对了最后int是16位二进制,不是32位,请楼主再查查书吧!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行