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了,还是死循环


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

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

数据类型: 1.内置类型(C本身): 整形,浮点型,字符型。 2.构造类型(自定义类型):数组,结构体,枚举。 3.指针类型。 4.空类型。 头文件limis.h定义...
  • f2016913
  • f2016913
  • 2016年10月26日 17:36
  • 938

char如何计算溢出值

无符号char 类型能标示的数是:0-255 有符号char类型能标示的数是:-128-127 char c = 128; printf("c = %x \n", c); 得到结果是:...
  • lmj15151856373
  • lmj15151856373
  • 2016年11月24日 23:23
  • 437

关于char的溢出问题

现在看下面的问题int main() { char number = 129; printf(“number=%d\n”, number); return 0; }结果为什么...
  • lzh_wk
  • lzh_wk
  • 2017年09月18日 09:21
  • 304

unsigned char 数值溢出问题

#include int main(void) {     unsigned char i = 256; int a; a = i + 256; i = a; printf("%...
  • qq_30137611
  • qq_30137611
  • 2016年06月04日 13:32
  • 719

char 溢出

char 类型的数据只有一个 Byte, 8bits,如果是unsigned char 的话,能表示的范围就是0 ~255,看下面的这个例子: /* =====================...
  • chenqiang0721
  • chenqiang0721
  • 2013年10月14日 10:19
  • 687

将两个字符串连接。解决了c语言输入出现溢出现象

#include #include int main() {     char *getstr(void);     void concatenatc(char *s1,char *s2,char ...
  • jingzhewangzi
  • jingzhewangzi
  • 2014年08月29日 22:25
  • 728

char溢出计算

无符号char 类型能标示的数是:0-255 有符号char类型能标示的数是:-128-127 char c = 128; printf("c = %x \n", c); 得到...
  • zh3201
  • zh3201
  • 2016年11月27日 15:57
  • 95

ARM平台下数据类型char的误区

Char类型自然是Cprogramming中最为常用的数据类型之一,我们都认为再简单不过了,所以使用的时候会如果信手拈来可能会产生不必要的麻烦,甚至是严重的bug,这类错误往往又是比较难debug的。...
  • u011461299
  • u011461299
  • 2013年08月01日 13:02
  • 1103

谈谈C语言的溢出

溢出是C语言中最常见的漏洞。最常见的溢出包括数组溢出、数溢出、缓冲区溢出、指针溢出以及栈溢出,下面笔者就对这些溢出做一个总结归纳。 1 数组溢出 数组溢出是最常见的一种溢出。因为在C语言中...
  • wyunteng
  • wyunteng
  • 2011年04月21日 19:36
  • 4336

C++ bool,char,short,int,long,float,double数据类型大小以及数据溢出值求解

以下讨论皆在32位编译环境下 类型 含义 字节数 取值范围 bool                        布尔型 1 0,1 char 字符型 1 [-2^7, 2^7-1]...
  • S_powerStone
  • S_powerStone
  • 2017年08月17日 16:35
  • 189
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:char溢出
举报原因:
原因补充:

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