经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
C/C++编程笔记:C ++数据类型超出有效范围时,我们应该怎么办?
来源:cnblogs  作者:安生丶  时间:2021/1/11 9:47:21  对本文有异议

首先,我们来考虑以下程序。

1)程序显示当我们越过'char'范围时会发生什么:

 

这段代码会打印“ a”直到它变成226吗?答案是不确定的循环,因为这里的“ a”被声明为字符,其有效范围是-128到+127。当“ a”通过a ++变为128时,超出范围,结果,从范围的负数开始的第一个数字(即-128)被分配给a。因此,满足条件“ a <= 225”,并且控制保留在循环内。

2)程序显示当我们越过'bool'范围时会发生什么:

 

该代码将无限期打印“ 1”,因为此处的“ a”被声明为“ bool”,有效范围是0到1。对于布尔变量,除0以外的任何其他都是1(或true)。当“ a”试图变为2(通过a ++)时,会将1分配给“ a”。满足条件a <= 5,并且控制保留在循环中。

3)程序显示当我们跨过'short'的范围时会发生什么:

注意short是short int的简称。它们是同义词。short,short int,signed short和signed short int都是相同的数据类型。

 

这段代码会打印'a'直到变成32770吗?答案是不确定的循环,因为这里的“ a”被声明为short,其有效范围是-32768至+32767。当“ a”试图通过a ++变为32768时,超出范围,结果是该范围负数的第一个数字(即-32768)被分配给a。因此,条件“ a <32770”得到满足,控制仍在循环内。

4)程序显示当我们跨过'unsigned short'范围时会发生什么:

 

这段代码会打印“ a”直到变成65536吗?答案是不确定的循环,因为这里的“ a”被声明为short,其有效范围是0到+65535。当“ a”试图通过a ++变为65536时,超出范围,结果是范围中的第一个数字(即0)分配给了a。因此,条件“ a <65536”得到满足,控制仍在循环内。

说明-

我们知道计算机使用2的补码表示数据。例如,如果我们有1个字节(我们可以使用char并使用%d作为格式说明符以十进制形式查看它),则可以表示-128到127。如果我们将1加上127,我们将得到-128。那是因为127是二进制格式的01111111。如果将1添加到01111111中,我们将得到10000000。10000000是2的补码形式的-128。

如果我们使用无符号整数,也会发生同样的情况。255是11111111,当我们将1加到11111111时,我们将得到100000000。但是我们只使用前8位,所以它是0。因此,在255中加1后得到0。

 

另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~

C语言C++编程学习交流圈子,QQ群464501141点击进入】微信公众号:C语言编程学习基地

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

编程学习书籍分享:

编程学习视频分享:

原文链接:http://www.cnblogs.com/258a/p/14253399.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号