c语言ASCII字符与Unicode字符的问题

2025-04-09 19:34:27
推荐回答(2个)
回答1:

不同的编译器对此有不同的处理,
char t = 'AB';
比如GCC就是取t='B'就是最后的那个字符,而有些编译器是取'A'。但是基本上所有的编译器都不会对此报错

至于第2个问题嘛,cout可不可以我不知道,不过printf()是可以的
printf("%#06x",c);
#表示在前面加上0x标志
06表示数据占6位(包括0x),并补上0
x表示16进制

下面的是可以输出0x0041的

#include
#include
#include
int main()
{

wchar_t c = L'A';
wchar_t *p = &c;
printf("%#06x",c);

return 0;
}

回答2:

char t = 'AB';
不会报错,但会给出警告信息,等价于
char t = 'A';
char t = 'B';
所以会是B,即最后一个char

你可以改成
#include
cout<表示打印占4个字节的位置,不够的用0填充