C#:
char z = '\u201D';
int i = (int)z;
C++/CLI:
wchar_t z = '\u201D';
int i = (int)z;正如我所预料的,在C#中,"i“变成了8221 (201D美元)。另一方面,在C++/CLI中,它变成65428 ($FF94)。有个善良的灵魂能给我解释一下吗?
编辑:wchar_t的大小在这里不会有问题,因为:
C++/CLI:
wchar_t z = (wchar_t)8221;
int i = (int)z;在这里,i也变成了8221,所以wchar_t确实适合在我的系统上持有一个16位整数的游戏。埃克福舒斯
发布于 2009-12-01 15:05:32
你想:
wchar_t z = L'\x201D';来自这里。你是个未知数。
发布于 2009-12-01 14:16:27
根据维基百科
“
wchar_t的宽度是编译器特有的,可以小到8位。因此,需要跨任何C或C++编译器移植的程序不应该使用wchar_t来存储Unicode文本。wchar_t类型用于存储编译器定义的宽字符,在某些编译器中可能是Unicode字符。”
对于它是如何实现的,您不应该做任何假设。
https://stackoverflow.com/questions/1826426
复制相似问题