我有一个代码实现以下内容:
unsigned char charStr; //this var can only take a value either 0, 1, or 2
WCHAR wcharStr;
...
charStr = wcharStr - '0';
...
Run Code Online (Sandbox Code Playgroud)
我知道在从Unicode(wchar_t数据类型)转换为ANSI(unsigned char)时可能会丢失一些数据(从16位到8位).但是,有人可以解释为什么减去'0'使这种转换正确吗?
我有一个使用win32编写的c ++代码.就其使用的数据类型而言:
原语(int, double, float, bool, long,...)
Windows数据类型(INT, SHORT, LONG, BOOL, BYTE, WCHAR,...)
以及其他几种数据类型:__int64和wchar_t
问题:
一世.要将此代码移植到Linux,我应该使用哪些数据类型?
II.或者,为了使它跨平台(Linux和win32),这些数据类型是否与(i)中的数据类型不同?
提前致谢 !
我有一个实现 DirectSound8 的代码。MSFT 在其网站上声明该库已被弃用。那么,如果我更新此代码,前提是我维护 Windows 平台,我的选择是什么?如果我切换到 Linux,有哪些选择?
我正在读取c ++中的遗留代码,它定义了一个数组,然后分配给一个变量(见下文).虽然我过去使用过指针和引用,但我不确定这个表达式的含义.问题:
1.这个表达的含义是什么?
2.当(WORD*)中已经存在另一个指针时,为什么外部指针是必需的?
提前致谢 !
BYTE txbuf[16];
...
WORD crc = *((WORD*)(&txbuf[2]));
Run Code Online (Sandbox Code Playgroud) c++ ×4
ansi ×1
c ×1
directsound ×1
directx ×1
linux ×1
pointers ×1
unicode ×1
visual-c++ ×1
winapi ×1