首页 >> 大全

1和255有什么区别?

2023-06-17 大全 55 作者:考证青年

待到秋来九月八,我花开尽百花杀

-1和255的区别

了解了负数在计算机内存中的储存方式,也知道了计算机如何计算这些数,那么就生成了另外一个问题,-1和255有什么区别,同理还有许多负数与正整数发生了重叠的问题,就像是-1和255的在内存中的表示都是1111 1111,计算机是如何区分这些的呢?

参考:

比如

1111 1111 + 0000 0010

计算机算出

进位=1,值 = 0000 0001

编译器这时就要分辨,如果输出要求是有符号输出的,则输出1。如果输出要求无符号输出就按255+2输出,但要知道char最高位为8比特,最多表示为255,再+2就溢出了,输出表示仍然是1。

(要解释一下,char进入CPU时要进行整型提升,255和-1实际存入的是 1 1 1111 1111,所以如果直接无符号输出的话可能是,同样这也是整形的最大表示数,再+2,就会溢出,即便是强转int型也要输出的是1。参考:)

我们可以实验一下:

#include
int main()
{char a = -1;char b = 255;printf("%d\n", a);printf("%u\n", b);printf("%d\n", a + 2);printf("%u\n", b + 2);system("pause");return 0;
}

这也就验证了上述举例的正确性,那么前述的编译器识别输出的说法怎么证明呢?255和-1太特殊了,我们换一个一般的数就可以证明。

比如 -3 和 253

#include
int main()
{char a = -3;char b = 253;printf("%u\n", a);printf("%u\n", b);printf("%d\n", a + 2);printf("%u\n", b + 2);system("pause");return 0;
}

(注意:之所以输出了是整型提升的结果!)

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了