C 整数常量C Integer Constants

整数常量是表示整数值的十进制(基数为 10)、八进制(基数为 8)或十六进制(基数为 16)数字。An integer constant is a decimal (base 10), octal (base 8), or hexadecimal (base 16) number that represents an integral value. 使用整数常量表示不能更改的整数值。Use integer constants to represent integer values that cannot be changed.

语法Syntax

integer-constant:integer-constant:
    decimal-constant integer-suffixopt    decimal-constant integer-suffixopt
    octal-constant integer-suffixopt    octal-constant integer-suffixopt
    hexadecimal-constant integer-suffixopt    hexadecimal-constant integer-suffixopt

decimal-constant:decimal-constant:
    nonzero-digit    nonzero-digit
    decimal-constant digit    decimal-constant digit

octal-constant:octal-constant:
    0    0
    octal-constant octal-digit    octal-constant octal-digit

hexadecimal-constant:hexadecimal-constant:
    hexadecimal-prefix hexadecimal-digit    hexadecimal-prefix hexadecimal-digit
    hexadecimal-constant hexadecimal-digit    hexadecimal-constant hexadecimal-digit

hexadecimal-prefix: one ofhexadecimal-prefix: one of
    0x 0X    0x 0X

nonzero-digit: one ofnonzero-digit: one of
    1 2 3 4 5 6 7 8 9    1 2 3 4 5 6 7 8 9

octal-digit: one ofoctal-digit: one of
    0 1 2 3 4 5 6 7    0 1 2 3 4 5 6 7

hexadecimal-digit: one ofhexadecimal-digit: one of
    0 1 2 3 4 5 6 7 8 9    0 1 2 3 4 5 6 7 8 9
    a b c d e f    a b c d e f
    A B C D E F    A B C D E F

integer-suffix:integer-suffix:
    unsigned-suffix long-suffixopt    unsigned-suffix long-suffixopt
    unsigned-suffix long-long-suffix    unsigned-suffix long-long-suffix
    unsigned-suffix 64-bit-integer-suffix    unsigned-suffix 64-bit-integer-suffix
    long-suffix unsigned-suffixopt    long-suffix unsigned-suffixopt
    long-long-suffix unsigned-suffixopt    long-long-suffix unsigned-suffixopt
    64-bit-integer-suffix    64-bit-integer-suffix

unsigned-suffix: one ofunsigned-suffix: one of
    u U    u U

long-suffix: one oflong-suffix: one of
    l L    l L

long-long-suffix: one oflong-long-suffix: one of
    ll LL    ll LL

64-bit-integer-suffix: one of64-bit-integer-suffix: one of
    i64 I64    i64 I64

i64 和 I64 后缀为 Microsoft 专用。The i64 and I64 suffixes are Microsoft-specific.

整数常量为正数,除非它们的前面有减号 (-)。Integer constants are positive unless they are preceded by a minus sign (-). 减号解释为一元算术求反运算符。The minus sign is interpreted as the unary arithmetic negation operator. (有关此运算符的信息,请参阅一元算术运算符。)(See Unary Arithmetic Operators for information about this operator.)

如果整数常量以 0x0X 开始,则它是十六进制。If an integer constant begins with 0x or 0X, it is hexadecimal. 如果它以数字 0 开始,则为八进制。If it begins with the digit 0, it is octal. 否则,将其假定为十进制。Otherwise, it is assumed to be decimal.

以下整数常量是等效的:The following integer constants are equivalent:

28
0x1C   /* = Hexadecimal representation for decimal 28 */
034    /* = Octal representation for decimal 28 */

空白字符不能分隔整数常量的数字。No white-space characters can separate the digits of an integer constant. 这些示例显示了一些有效的十进制、八进制和十六进制常量。These examples show some valid decimal, octal, and hexadecimal constants.

    /* Decimal Constants */
    int                 dec_int    = 28;
    unsigned            dec_uint   = 4000000024u;
    long                dec_long   = 2000000022l;
    unsigned long       dec_ulong  = 4000000000ul;
    long long           dec_llong  = 9000000000LL;
    unsigned long long  dec_ullong = 900000000001ull;
    __int64             dec_i64    = 9000000000002I64;
    unsigned __int64    dec_ui64   = 90000000000004ui64;

    /* Octal Constants */
    int                 oct_int    = 024;
    unsigned            oct_uint   = 04000000024u;
    long                oct_long   = 02000000022l;
    unsigned long       oct_ulong  = 04000000000UL;
    long long           oct_llong  = 044000000000000ll;
    unsigned long long  oct_ullong = 044400000000000001Ull;
    __int64             oct_i64    = 04444000000000000002i64;
    unsigned __int64    oct_ui64   = 04444000000000000004uI64;

    /* Hexadecimal Constants */
    int                 hex_int    = 0x2a;
    unsigned            hex_uint   = 0XA0000024u;
    long                hex_long   = 0x20000022l;
    unsigned long       hex_ulong  = 0XA0000021uL;
    long long           hex_llong  = 0x8a000000000000ll;
    unsigned long long  hex_ullong = 0x8A40000000000010uLL;
    __int64             hex_i64    = 0x4a44000000000020I64;
    unsigned __int64    hex_ui64   = 0x8a44000000000040Ui64;

请参阅See also

C 常量C Constants