char溢出

原创 2016年05月31日 23:26:01

学习链接: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了,还是死循环


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

统计无符号整数二进制中1的个数(Hamming weight)

1.问题来源之所以来记录这个问题的解法,是因为在在线编程中经常遇到,比如编程之美和京东的校招笔试以及很多其他公司都累此不疲的出这个考题。看似简单的问题,背后却隐藏着很多精妙的解法。查找网上资料,才知道...

统计二进制中1的个数

最关键内容: 判断某一位置是否是1的一个方法(可以跳过0,所以比全部位置循环一遍效率高),v&=(v-1); 例如: 01 000 000 &(01 000 000 - 00 000 00...

数据类型之char型溢出的讨论。

数据类型: 1.内置类型(C本身): 整形,浮点型,字符型。 2.构造类型(自定义类型):数组,结构体,枚举。 3.指针类型。 4.空类型。 头文件limis.h定义...

(un)signed char 及溢出

原码是将二进制的符号位不变,其他位依次按位取反 补码是反码加一 正数的原码反码补码都相同 unsigned char 在计算机中使用补码储存 int/unsigned int变量赋值给 u...

文件char数组格式

  • 2014年11月29日 14:49
  • 252KB
  • 下载

Java 中 char 与 byte 的区别

  • 2015年08月07日 15:11
  • 15KB
  • 下载

Java中char和String 的深入理解 - 字符编码1

看完你真的会清清楚楚明明白白的知道!!! 计算机世界 字符编码 的前世与今生!...

open flash char2 操作文当

  • 2014年11月14日 09:13
  • 852KB
  • 下载

【编程拾遗】VC++中LPCTSTR、CString、char *、string之间的相互转换

字符集 在VC2012中,字符集默认采用Unicode字符集(Use Unicode Charecter Set选项),其值还可以设置为多字节字符集(Use Multi-Byte Charect...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:char溢出
举报原因:
原因补充:

(最多只允许输入30个字)