字符变量在C中可以保存的值范围是多少?

时间:2014-05-16 02:30:48

标签: c

我理解字符变量在C中声明为char C;。但是字符变量可以包含哪些值?

2 个答案:

答案 0 :(得分:11)

答案确实是:这取决于您的平台。

幸运的是,这些都是在您的实施<limits.h>中定义的。在这里,您将找到定义char的有效范围的常量,以及所有其他标准数据类型。

char是一个字节,通常 8位。从技术上讲,charCHAR_BIT位。对于一些非常旧的机器,这是7,但这些是在C规范要求CHAR_BIT >= 8之前。还有其他类似DSP的实现具有更大的char s。

  • char可以将CHAR_MIN范围设为CHAR_MAX
  • signed char可以将SCHAR_MIN范围设为SCHAR_MAX
  • unsigned char可以将范围0设为UCHAR_MAX
  • 如果CHAR_MIN == SCHAR_MIN,那么您的char已签名;否则它是未签名的。

答案 1 :(得分:4)

根据C标准(N1570草案):

  

5.2.4.2.1整数类型的大小

     

下面给出的值应替换为适用于#if的常量表达式   预处理指令。而且,除了CHAR_BIT和MB_LEN_MAX之外   以下内容应替换为与a相同类型的表达式   表达式,它是根据整数转换的相应类型的对象   促销活动。 它们的实现定义值的大小(绝对值)应与显示的值相等或更大,且符号相同。

     
      
  • - 最小对象不是位字段(字节)的位数

       CHAR_BIT     8
    
  •   
  • - signed char

    类型对象的最小值
       SCHAR_MIN    -127 // −(2^7 − 1)
    
  •   
  • - signed char

    类型对象的最大值
       SCHAR_MAX    +127 // 2^7 − 1
    
  •   
  • - unsigned char类型对象的最大值

       UCHAR_MAX    255 // 2^8 − 1
    
  •   

可以通过<limits.h>中定义的值检查实施的确切值。