关于char型赋值给int型

本文探讨了C++中char、unsigned char与short类型的数值范围及溢出行为,并通过实例展示了不同类型之间的转换如何影响数值输出。

今天在知乎上看到一道关于C++的面试题:


   char c=255;

   unsigned short b=c;

   cout<<b<<endl;


输出结果为:


在VC上运行之后得到的输出为 65535.   (2^16-1)


减小 c 的值,输出的b的值也相应减少。当 c = 127(2^7-1)时 输出的b值与c一致,继续减小,输出的值与 c 值保持一致,直到为0;

增大 c 的值,输出的b值从0开始再次递增,即当c = 256时,输出为 0 ;

继续增大 c 的值,当 c 的值增大到65536时(2^16),输出的值再次为0,输出的值继续随 c 递增;

再继续增大c 的值,当 c 的值增大到4294967296时(2^32),输出的值又再次变为0,输出的值再次随 c 递增;


当将char改为 unsigned char时,

该程序段输出的结果为 255;

但继续增大 c ,c=256时,输出变为0,再继续增大后的输出与前面一致。


由此可初步得到:

char  可存 256 个数  即 8位;

short 可存 65536个数 即 16位;

 long 可存 4294967296个数 即 32位;

不声明int的类型 则默认为 long型。


char 可以看做一种比short更小的整型变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值