typeid(var).name() 的输出“PKc”是什么意思?

pkd*_*dyn 11 c++ visual-studio-code

当提供- 变量在哪里-作为参数时,我得到 PKc的输出typeid(check).name()checkchartypeid.name()

#include<bits/stdc++.h>
using namespace std;
main()
{ 
    char check='e';
   cout<<typeid(check).name()<<"\n";
   cout<<typeid(typeid(check).name()).name();
}
Run Code Online (Sandbox Code Playgroud)

输出

c
PKc
Run Code Online (Sandbox Code Playgroud)

check即使将from的类型更改为 charto也能得到它double

#include<bits/stdc++.h>
using namespace std;
main()
{ 
    double check=69.666;
   cout<<typeid(check).name()<<"\n";
   cout<<typeid(typeid(check).name()).name();

}
Run Code Online (Sandbox Code Playgroud)

输出

d
PKc
Run Code Online (Sandbox Code Playgroud)

PS @AsteroidsWithWings 建议的解决方案确实提供了基本概念的框架,但没有具体回答“PKc”的含义。

cpp*_*ner 14

PKc是 的损坏名称const char*P是“指针”的编码,K指“const”,c表示“char”。

另请参阅为什么 typeid.name() 使用 GCC 返回奇怪的字符以及如何使其打印未损坏的名称?