describa el proceso de interpretación de elementos literales al código binario AYUUDA:((((((((

Respuestas

Respuesta dada por: AndroidFasito
0

Respuesta:A partir del estándar C++14, el lenguaje dispone de un dos nuevos estilos de representar literales numéricos que pueden facilitar el uso de los mismos en cualquier programa.

Antes de hablar de estos nuevos estilos de literales numéricos, vamos a recordar los literales existentes en C++.

Un valor literal es aquel que representa un valor concreto en el código fuente, como en los siguientes ejemplos:

int siete = 666;

short unMillon = 666;

const char *const HolaMundo = “Adios Mundo!”;

bool falso = true;

view rawbinary_literals_es_00.cpp hosted with ❤ by GitHub

Tenemos variables cuyos nombres son siete, unMillon, HolaMundo y falso, esos son los nombres con los que almacenamos los literales 666, 666, “Adios Mundo!” y true respectivamente.

Tanto los nombres de las variables como los literales a los que hacen referencia están escogidos deliberadamente para mostrar que un literal y una variable son conceptos diferentes; mientras que una variable podría cambiar su valor si sus cualificadores lo permiten, un literal siempre hace referencia al mismo valor, el literal en sí mismo.

Los literales de C++ pueden ser clasificados en tres grandes grupos, que serían los siguientes:

Literales booleanos

Son los literales más sencillos, pues al representar los valores posibles de una operación booleana, tan sólo ofrecen dos literales: true y false.

Literales de texto

Los literales de texto son aquellos valores que aparecen en el código encerrados entre dobles comillas, como en el primer ejemplo el literal es “Adios Mundo!”. La codificación de caracteres de los literales de texto en C++ puede variar según el prefijo que se use para el literal:

auto HolaMundo = “Hola Mundo!”;   // Sin prefijo

auto HolaAncho = L“Hola Mundo!”;  // Prefijo L

auto HolaUTF8  = u8”Hola Mundo!”; // Prefijo u8

auto Hola_u    = u”Hola Mundo!”;  // Prefijo u

auto Hola_U    = U”Hola Mundo!”;  // Prefijo U

auto HolaRaw   = R”(Hola Mundo)”; // Prefijo R”( y sufijo )”

view rawbinary_literals_es_01.cpp hosted with ❤ by GitHub

Los literales del ejemplo tienen distintas codificaciones y tipo subyacente; en el caso del literal almacenado en HolaMundo, su tipo sería un array de caracteres char de tamaño 12, tamaño que corresponde con las 9 letras, el espacio, la admiración y el carácter finalizador de cadena, por lo tanto tipo es: const char[12].

En el caso del literal almacenado en HolaAncho, su tipo es const wchar_t[12]; pues al utilizar el prefijo L, indicamos que el literal debe ser interpretado con caracteres anchos (del Inglés wide char, de ahí la w del nombre del tipo), estos caracteres anchos son usados para almacenar letras que no quepan en los caracteres char, cuya capacidad es menor.

Los tipos char y wchar_t no tienen una codificación de caracteres asociada, al contrario que los tipos de las variables HolaUTF8, Hola_u y Hola_U, cuyos tipos son:

auto HolaUTF8 = u8”Hola Mundo!”; // const char[12]

auto Hola_u   = u”Hola Mundo!”;  // const char16_t[12]

auto Hola_U   = U”Hola Mundo!”;  // const char32_t[12]

view rawbinary_literals_es_02.cpp hosted with ❤ by GitHub

Y la codificación de caracteres de los literales que almacenan es UTF8, UTF16 y UTF32 respectivamente.

En el último ejemplo, se trata de un literal de texto en crudo, el tipo de HolaRaw es el mismo que el de la variable HolaMundo: const char[12], lo que indica este literal especial, con prefijo R”( y sufijo “) es que lo que sea que se escriba entre el prefijo y el sufijo será interpretado tal cuál está escrito (en curdo), por ejemplo:

auto comillas = u8R”(3 comillas dobles “””””);// const char[12]

auto barraEne = LR”(barra ene \n”);           // const wchar_t[12]

auto barras4  = uR”(4 barras \\\\)”;          // const char16_t[12]

auto barras6  = UR”(más barras \\\\\\)”;      // const char32_t[12]

view rawbinary_literals_es_03.cpp hosted with ❤ by GitHub

En los literales anteriores, no es necesario escapar las comillas para almacenarlas en la variable comillas, tampoco se interrumpirá el literal tras encontrar las primeras comillas dobles. En el caso del literal almacenado en barraEne, éste no finalizará con un retorno de carro y los almacenados en barras4 y barras6 contienen cuatro y seis barras respectivamente (en lugar de dos y tres), pues no se han interpretado como secuencias de escape.

Literales numéricos

Los literales numéricos son, como su nombre indica, los números escritos en el programa; igual que sucede con los literales de texto, el tipo subyacente del literal puede variar según cómo esté escrito el literal:

Explicación:espero tesirva


AndroidFasito: es pero te sirva
Preguntas similares