1
C#:
char z = '\u201D';
int i = (int)z;

C++/CLI:
wchar_t z = '\u201D';
int i = (int)z;

i正如我所料,在 C# 中,“ ”变成了 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 位整数的游戏。埃克福舒斯

4

2 回答 2

4

你要:

wchar_t z = L'\x201D';

这里。\u 未定义。

于 2009-12-01T15:05:32.097 回答
0

根据维基百科

“的宽度wchar_t是特定于编译器的,可以小至 8 位。因此,需要在任何 C 或 C++ 编译器之间移植的程序不应使用 wchar_t 来存储 Unicode 文本。wchar_t 类型用于存储编译器定义的宽字符,在某些编译器中可能是 Unicode 字符。”

您不应该对它的实现方式做出任何假设。

于 2009-12-01T14:16:27.620 回答