什么是默认整数值?

时间:2014-01-27 14:05:48

标签: c int long-integer short

我在某处读到像1.2这样的默认浮点值double而不是float
那么像6这样的默认整数值是shortint还是long

3 个答案:

答案 0 :(得分:7)

基数10中给出的整数文字的类型是以下列表中可以适合其值的第一种类型:

  • int
  • long int
  • long long int

对于八进制和十六进制文字,也将按以下顺序考虑无符号类型:

  • int
  • unsigned int
  • long int
  • unsigned long int
  • long long int
  • unsigned long long int

您可以指定u后缀以强制unsigned类型,l后缀强制longlong long,或ll后缀强制long long

参考:C99,6.4.4.1p5

答案 1 :(得分:4)

如果有人有兴趣:

C11§6.4.4.1/ 5:

  

整数常量的类型是其值可以在其中的第一个相应列表   代表。

---------------------------------------------------------------------------
Suffix        Decimal Constant              Octal/Hexadecimal Constant
---------------------------------------------------------------------------
none          int                           int
              long int                      unsigned int
              long long int                 unsigned long int
                                            long long int
                                            unsigned long long int
---------------------------------------------------------------------------
u or U        unsigned int                  unsigned int
              unsigned long int             unsigned long int
              unsigned long long int        unsigned long long int
---------------------------------------------------------------------------
l or L        long int                      long int
              long long int                 unsigned long int
                                            long long int
                                            unsigned long long int
---------------------------------------------------------------------------
Both u or U   unsigned long int             unsigned long int
and l or L    unsigned long long int        unsigned long long int
---------------------------------------------------------------------------
ll or LL      long long int                 long long int
                                            unsigend long long int
---------------------------------------------------------------------------
Both u or U   unsigned long long int        unsigned long long int
and ll or LL
---------------------------------------------------------------------------

关于前缀§6.4.4.1/ 3:

  

十进制常量以非零数字开头,由一系列十进制数字组成。八进制常量由前缀0组成,可选地后跟一个数字0到7的序列。十六进制常量由前缀0x或0X后跟一个十进制数字序列和字母a(或A)到f(或F)组成,值分别为10到15。

答案 2 :(得分:2)

有三种类型的整数文字(标准术语中的或整数常量):十进制,八进制或十六进制,规则略有不同,具体示例6将为{ {1}}但通常对于没有后缀( u,U,l,L,ll,LL )的十进制常量,它将基于哪种类型可以表示{中涵盖的值{3}}部分int 整数常量段落 5 ,其中包含:

  

整数文字的类型是相应列表中可以表示其值的第一个。

因此对于没有后缀的十进制文字,类型将是第一个:

  • INT
  • long int
  • long long int

octal hex 这些类型将是第一个:

  • INT
  • unsigned int
  • long int
  • unsigned long int
  • long long int
  • unsigned long long int