首先,我们来考虑以下程序。
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 编程学习交流圈子,点击下方【了解更多】获取更多学习资料帮助你学习成长哦~
,