首页 > 试题广场 >

C 语言中, 32768 是不正确的 int 类型常数。请问

[单选题]
C 语言中, 32768 是不正确的 int 类型常数。请问这句话的说法是正确的吗?
  • 正确
  • 错误
推荐
B考察C语言中int类型的常数的范围。

①int的取值范围依赖于计算机系统:
  • 在16位机器中int占16位,是两个字节,取值范围为前面所说的-32768~32767(-2^16~2^16-1)。此时题中表述是正确的。
  • 在32位和64位机器中,int占32位,即4个字节长度,取值范围为-2147483648~2147483647(-2^32~2^32-1)。此时题中表述是错误的。
②int的取值范围也和语言标准有关:
  • ISO/ANSI C规定,int类型的最小范围为-32768到32767。因此int类型常数的范围不限于-32768到32767,可以得到题中表述是错误的。
  • 在C++官网中给出的C99标准中的宏定义,int类型的范围为-32767到32767。
如下图:

如下图,是在64位机器上运行输出C语言int类型常量的最大值及最小值:

可以看到,此时int类型常量的取值范围为-2147483648~2147483647。

综上,在32位和64位机器中, 32768 是正确的C语言 int 类型常数,因此本题选B。
编辑于 2020-02-28 14:22:36 回复(1)
B。考察的是int类型存储大小和值范围的条件

以下两个决定条件:

  • 各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主。如:在16位芯片上int型类型大小为16位,即两字节,而在32位机器上,int型为32位,即四字节。
  • 在C语言中,类型还由语言标准和编译器共同决定。如:C99 spec标准INT_MIN -32767   INT_MAX +32767
如下图为C99 spec标准,题目中的32768超过了INT_MAX的范围,所以题目中的是错误的说法。

发表于 2020-02-27 23:55:51 回复(0)
32767只占用两个字节,short类型,int字节数翻倍;,,容易懵
发表于 2020-05-21 19:27:44 回复(0)