欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

char溢出

发布时间:2025/6/15 编程问答 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 char溢出 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

学习链接:http://zhidao.baidu.com/link?url=uCJPW3GPedxRYJnI84dk9mqAWKzBQ-h6Uq1H5GqwNlgSNorqXi2qNGD7OnIFOpGZn2Kcc6xFmfZkAjMcEkK_e_

说明:代码来自<<程序员面试宝典>>

#define MAX 255 #include<iostream> using namespace std;int main() {char p[MAX+1];char ch;for(ch=0;ch<=MAX;ch++) {p[ch]=ch;}return 0; }程序错误,程序进入死循环。


下面来说明一下:

char是有符号的,char在-128~127之间。当ch=128时,就越界了,然后就变成了-128.

当ch=127时,ch的二进制为 0111 1111,其中第一位是用来表示符号的。如果+1,则符号为变为1.这是这个二进制变成补码了,而它的源码是-128.所以说有符号的char是不能表示128的。这样ch永远<=MAX,因为到了128就变为负数,程序死循环。


char变为unsigned char时,当ch=255时,对应二进制为1111 1111,这时+1,则全部变为0了,还是死循环


总结

以上是生活随笔为你收集整理的char溢出的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。