c++字符编码,(unsigned short int)L"啊?

unsigned short int a=(unsigned short int)L"啊"; 啊的Unicode值是21834,为什么a的值不是21834?

#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
    /**
    *   字符  utf-8 编码10进制   utf-8编码16进制       Unicode编码10进制       Unicode编码16进制 
     *  啊       15046026              E5958A            21834            554A
     *
    *   字符    GBK编码10进制       GBK编码16进制(GBK内码)
     *   啊      45217           B0A1
     *
     *  
     */
    unsigned short int a=(unsigned short int)L"啊";
    cout<<a<<endl;// 打印31536
    
    return 0;
}

unsigned short int a=(unsigned short int)L'啊';
unsigned short int a=(unsigned short int)L"啊"[0];

这篇文章:【C++】int类型转换为unsigned int类型 也许能够解决你的问题,你可以看下