¿Qué significa "PKc", como la salida de typeid(var).name(),?
Me voy.
PKc
como la salida al proporcionar typeid(check).name()
- donde check
es un char
variable - como el argumento typeid.name()
#include
using namespace std;
main()
{
char check='e';
cout<
Producto
c
PKc
Obtener incluso en cambiar el tipo de check
desde char
a double
#include
using namespace std;
main()
{
double check=69.666;
cout<
Producto
d
PKc
P.S. The solución sugerido por @Asteroids WithWings proporciona los escalones de los conceptos subyacentes pero no responde específicamente lo que significa "PKc".
Pregunta hecha hace 3 años, 4 meses, 26 días - Por codemasterx
4 Respuestas:
-
PKc
es nombre mangled deconst char*
.P
es la codificación para "puntero",K
se refiere a "const", yc
significa "char".Véase también ¿Por qué tipoid.name() devuelve caracteres raros usando GCC y cómo hacerlo imprimir nombres sin igual?.
Respondida el Dec 19, 2020 a las 12:21 - por codechampionx
Votos positivos: 0 | Votos negativos: 0 -
Esa cuerda es devuelta de un
std::type_info::name()
función llamada. El resultado de esa función es la aplicación específica, es decir, la norma C++ no requiere que todos los compiladores devuelvan alguna cadena específica. En cambio, cada compilador puede inventar su propia representación de cadenas de nombres de tipo C++. Los compiladores no son necesarios para que esa cadena sea fácilmente legible.Muy probable,
"PKc"
es la cadena que su compilador particular está utilizando para representarconst char*
tipo, que es el tipo de retornostd::type_info::name()
función.Respondida el Dec 19, 2020 a las 12:26 - por codesculptor
Votos positivos: 0 | Votos negativos: 0 -
En el contexto de la salida de
typeid(var).name()
, "PKc" significa lo siguiente:- "P" representa un "puntero" en el código fuente.
- "K" representa una "constante".
- "c" representa un "char"
Por lo tanto, "PKc" hace referencia a un puntero constante a un tipo de dato de char.
En cuanto a tu código, la salida de
typeid(check).name()
como "PKc" se debe al hecho de que typeid devuelve información sobre el tipo de dato de la variablecheck
, que en este caso es unchar
. Al hacertypeid(typeid(check).name()).name()
, estás obteniendo la información sobre el tipo de dato del resultado detypeid(check).name()
, que también es un puntero constante a un tipo de dato char.Por otro lado, cuando cambias el tipo de
check
adouble
, la salida detypeid(check).name()
ahora será "d" que representa el tipo de dato double. Pero la salida detypeid(typeid(check).name()).name()
seguirá siendo "PKc" porque sigue siendo un puntero constante a un tipo de dato char, debido a quetypeid(check).name()
devuelve una cadena constante.Espero que esta explicación haya aclarado tu duda.
Respondida el Dec 20, 2020 a las 12:24 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
PKc
significa "Puntero a carácter constante".En C++,
char
es un tipo de dato primitivo que representa un solo carácter. Cuando se declara una variablechar
, se reserva un byte de memoria para almacenar el carácter.typeid(check).name()
devuelve el nombre del tipo de la variablecheck
. En este caso,check
es un carácter, por lo quetypeid(check).name()
devolverá"c"
.typeid(typeid(check).name()).name()
devuelve el nombre del tipo del tipo de la variablecheck
. En este caso, el tipo decheck
es un carácter, por lo quetypeid(check).name()
devuelve"c"
. Por lo tanto,typeid(typeid(check).name()).name()
devolverá"PKc"
, que es el nombre del tipo del puntero a carácter constante.Esto se debe a que
typeid(check).name()
devuelve un puntero a una cadena que contiene el nombre del tipo. El tipo de este puntero esconst char*
, que es un puntero a carácter constante.Por lo tanto,
PKc
significa "Puntero a carácter constante".Respondida el Dec 20, 2020 a las 12:31 - por Gemini
Votos positivos: 0 | Votos negativos: 0