Partilhar via


Constantes de inteiro C++

As constantes de inteiro são elementos de dados constantes que não têm nenhuma parte fracionária ou expoente. Sempre começam com um dígito. Você pode especificar constantes de inteiro no formato decimal, octal ou hexadecimal. Elas podem especificar tipos com sinal e sem sinal e longos ou curtos.

Gramática

  • integer-constant:
    decimal-constant integer-suffixopt

    octal-constant integer-suffixopt

    hexadecimal-constant integer-suffixopt

    'c-char-sequence'

  • decimal-constant:
    nonzero-digit

    decimal-constant digit

  • octal-constant:
    0

    octal-constant octal-digit

  • hexadecimal-constant:
    0x hexadecimal-digit

    0X hexadecimal-digit

    hexadecimal-constant hexadecimal-digit

  • nonzero-digit: um de
    1 2 3 4 5 6 7 8 9

  • octal-digit: um de
    0 1 2 3 4 5 6 7

  • hexadecimal-digit: um de
    0 1 2 3 4 5 6 7 8 9

    a b c d e f

    A B C D E F

  • integer-suffix:
    unsigned-suffix long-suffixopt

    long-suffix unsigned-suffixopt

  • unsigned-suffix: um de
    u U

  • long-suffix: um de
    l L

  • 64-bit integer-suffix:
    i64 LL ll

Para especificar constantes de inteiro usando a notação octal ou hexadecimal, use um prefixo que denote a base. Para especificar uma constante de inteiro de determinado tipo integral, use um sufixo que denote o tipo.

Para especificar uma constante decimal, inicie a especificação com um dígito diferente de zero. Por exemplo:

int i = 157;   // Decimal constant
int j = 0198;  // Not a decimal number; erroneous octal constant
int k = 0365;  // Leading zero specifies octal constant, not decimal

Para especificar uma constante octal, inicie a especificação com o 0, seguido por uma sequência de dígitos no intervalo de 0 a 7. Os dígitos 8 e 9 são erros na especificação de uma constante octal. Por exemplo:

int i = 0377;   // Octal constant
int j = 0397;   // Error: 9 is not an octal digit

Para especificar uma constante hexadecimal, inicie a especificação com 0x ou 0X (não importa se “x” é minúsculo ou maiúsculo), seguido por uma sequência de dígitos no intervalo de 0 a 9 e de a (ou A) a f (ou F). Os dígitos hexadecimais de a (ou A) a f (ou F) representam valores no intervalo de 10 a 15. Por exemplo:

int i = 0x3fff;   // Hexadecimal constant
int j = 0X3FFF;   // Equal to i

Para especificar um tipo sem sinal, use o sufixo u ou U. Para especificar um tipo longo, use o sufixo l ou L. Por exemplo:

unsigned uVal = 328u;             // Unsigned value
long lVal = 0x7FFFFFL;            // Long value specified 
                                  //  as hex constant
unsigned long ulVal = 0776745ul;  // Unsigned long value

Para especificar um tipo integral de 64 bits, use o sufixo LL, ll ou i64. Por exemplo,

// 64bitsuffix.cpp
#include <stdio.h>
enum MyEnum {
   IntType,
   Int64Type
};

MyEnum f1(int) {
   printf("in f1(int)\n");
   return IntType;
}

MyEnum f1(__int64) {
   printf_s("in f1(__int64)\n");
   return Int64Type;
}

int main() {
   MyEnum t1 = f1(0x1234), t2 = f1(0x1234i64);
}

Saída

in f1(int)
in f1(__int64)

Consulte também

Referência

Literais C++