码迷,mamicode.com
首页 > 其他好文 > 详细

34 char类型转换为int类型

时间:2017-09-04 12:03:53      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:col   分析   cst   二进制   负数   类型   font   size   ext   

 

#include<iostream>
#include<cstdlib >
using namespace std;
 
int main() {
         char a=101;
         int sum=200;
         a+=27;sum+=a;
         printf("%d", a);
         cout<<sum<<endl;
}

  

分析:char类型的范围是-128---+127,当a+=27,之后a的值超出可表示范围会变为-128.

a为char型,-128~127,a=101,a+=27后溢出a=-128:

a=127时不溢出 01111111(127补码)

a+=1时溢出 10000000(-128补码)

 

sum += a;

sum为int型,a(char提升为int)

10000000------->11111111  11111111  11111111  10000000(-128补码)

所以,sum=200-128:00000000  00000000 00000000  11001000

+11111111 11111111  11111111 10000000

----------------------------------------------------------------------------------

 00000000  00000000  00000000  01001000  (64+8=72)

 



char c=128; printf("c=%d\n",c); 结果为什么是-128,请解释为什么?

因为有符号字符型其范围为-128~127,127用二进制表示为:0111 1111,128表示为1000 0000,这里发生溢出,因为第一位为1,为符号位,表示负数,即-128

34 char类型转换为int类型

标签:col   分析   cst   二进制   负数   类型   font   size   ext   

原文地址:http://www.cnblogs.com/dd2hm/p/7472668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!