【发布时间】:2018-08-12 14:49:53
【问题描述】:
我有一个实现以下内容的代码:
unsigned char charStr; //this var can only take a value either 0, 1, or 2
WCHAR wcharStr;
...
charStr = wcharStr - '0';
...
我知道在从 Unicode(wchar_t 数据类型)转换为 ANSI(无符号字符)时,您可能会丢失一些数据(从 16 位到 8 位)。但是,有人可以解释为什么减去“0”会使这种转换正确吗?
【问题讨论】:
-
它没有做你认为它做的事情。
-
这取决于上下文。通常当 c 是一个数字时你会做
c-'0'并且你想得到这个数字的表示。 -
这些都不是字符串,为什么要这样命名?
-
第 1 步请不要再将
wchar_t视为“Unicode”,或将char视为“ANSI”。 -
@ekremer 当我谈到一个数字的表示时,我的意思是:1 是一个数字,它的表示是
'1',它是一个值为 49 的数字常量(该值由ASCII 表)