La creación de los literales c ++ con prefijos y sufijos

ahorrando tiempo y esfuerzo es parte de la razón utiliza literales. No es una forma abreviada para crear literales y asegúrese de obtener el tipo correcto constante. Muchos de los literales estándar le proporcionará un prefijo o sufijo que puede utilizar para acceder a ellos. Precisamente cómo se interpreta el prefijo o sufijo depende de cómo lo usa.

Por ejemplo, un sufijo de T podría significar una unsigned int cuando se utiliza con una int valor, mientras que un prefijo de T podría significar una const char32_t puntero cuando se utiliza con una cadena de caracteres. La tabla muestra una lista de los prefijos y sufijos que apoyan la mayoría de los compiladores.

Los prefijos y sufijos estándar
Tipo de datosPrefijoSufijoTipo resultante
intU ouunsigned int
intL o llargo
intUL, UL, UL, UL, LU, Lu, Lu, o luunsigned long
intLL o lllargo largo
intULL, Ull, ULL, ULL, Universidad de Loma Linda, Loma Linda, Loma Linda, o lluunsigned long long
dobleF o fflotador
dobleL o ldoble largo
carbonizarseLwchar_t
carbonizarseTchar32_t
carbonizarseuchar16_t
CuerdaLconst wchar_t *
CuerdaTchar32_t const *
Cuerdauchar16_t const *

El uso de los prefijos y sufijos puede ahorrar un tiempo considerable. los Prefijos y sufijos ejemplo aquí demuestra cómo te emplearlos para crear variables de diversos tipos.

#incluir #include using namespace std-using namespace abi-char * demangle (const char * Object) {int Estado-char * RealName-RealName = __cxa_demangle (Object, 0, 0, &Status) -Retorno RealName-} int main () {auto Int1 = 23-auto Int2 = 23L-auto Int3 = 23U-auto int4 = 23U-auto Cadena1 = "Hola"-auto String2 = L"Hola"-auto string3 = U"Hola"-auto STRING4 = u"Hola"-cout lt; lt; INT1 lt; lt; endl lt; lt; Demangle (typeid (Int 1) .name ()) lt; lt; endl-cout lt; lt; INT2 lt; lt; endl lt; lt; Demangle (typeid (Int2) .name ()) lt; lt; endl-cout lt; lt; int3 lt; lt; endl lt; lt; Demangle (typeid (Int3) .name ()) lt; lt; endl-cout lt; lt; int4 lt; lt; endl lt; lt; Demangle (typeid (int4) .name ()) lt; lt; endl-cout lt; lt; cadena1 lt; lt; endl lt; lt; Demangle (typeid (cadena1) .name ()) lt; lt; endl-cout lt; lt; string2 lt; lt; endl lt; lt; Demangle (typeid (Cadena2) .name ()) lt; lt; endl-cout lt; lt; string3 lt; lt; endl lt; lt; Demangle (typeid (STRING3) .name ()) lt; lt; endl-cout lt; lt; string4 lt; lt; endl lt; lt; Demangle (typeid (STRING4) .name ()) lt; lt; endl retorno 0-}

los Demangle () función es GCC específico. La mayoría de los compiladores de C ++ mutilar (Modificar la ortografía de) palabras clave y escriba la información para hacer una aplicación más difícil que alguien revertir a montar (Convertir de nuevo en lenguaje de máquina código fuente en C ++).

Video: La Eduteca - Los sufijos

Con el fin de determinar la información de tipo, se utiliza el typeid () función para crear una typeinfo estructura. los nombre() función devuelve el nombre del tipo que se encuentra en esta estructura para que se muestre en pantalla. Sin embargo, este nombre es destrozado, por lo que debe utilizar el Demangle () función para cambiar de nuevo a su forma original, legible.

La mayoría de los ejemplos de este capítulo se basan en el auto palabra clave para detectar automáticamente el tipo de variable creada por una UDL. Esta palabra clave es una característica importante para los nuevos aplicaciones C ++ que hacen uso de las nuevas extensiones que el lenguaje proporciona.

En este caso, el código utiliza la palabra clave automático para detectar la salida del prefijo o sufijo literal para que la variable es automáticamente el tipo correcto para una situación. Cuando se ejecuta esta aplicación, consulte el siguiente resultado:

23int23long23unsigned int23unsigned intHellochar const * const * 0x46e02cwchar_t 0x46e038char32_t const * const * 0x46e02cchar16_t

A pesar de que los datos es la misma en todos los casos, las variables utilizadas para contener los datos difieren debido al prefijo o sufijo usado para crear la variable. Tenga en cuenta que el mismo prefijo o sufijo tiene diferentes efectos en función del tipo de la variable a la que se aplica. Además, a veces el caso de las materias prefijo o sufijo (como en el trabajo con una cadena).

Algunos compiladores, como GCC, incluyen extensiones no estándar para datos numéricos que se necesita para utilizar con cuidado. Dada la popularidad de GCC y la necesidad de estos formatos de número, es posible que a pesar de todo hay que usarlos a veces. Aquí hay algunas extensiones de sufijos comunes prestados por las implementaciones del CCG:

  • re: doble

  • df: _Decimal32

  • dd: _Decimal64

    Video: ¡Juega a los PREFIJOS y SUFIJOS!

  • dl: _Decimal 128

    Video: Juega utilizando PREFIJOS y SUFIJOS!

  • w: __float80

  • q: __float128

  • yo: complejo doble

  • fi: complejo de flotación

Artículos Relacionados