c语言怎么规定数据范围(CC编程笔记)(1)

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

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

c语言怎么规定数据范围(CC编程笔记)(2)

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

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

c语言怎么规定数据范围(CC编程笔记)(3)

该代码将无限期打印“ 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都是相同的数据类型。

c语言怎么规定数据范围(CC编程笔记)(4)

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

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

c语言怎么规定数据范围(CC编程笔记)(5)

这段代码会打印“ 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语言怎么规定数据范围(CC编程笔记)(6)

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

编程学习书籍分享:

c语言怎么规定数据范围(CC编程笔记)(7)

编程学习视频分享:

c语言怎么规定数据范围(CC编程笔记)(8)

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

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

C语言C 编程学习交流圈子,点击下方【了解更多】获取更多学习资料帮助你学习成长哦~

,