2014-02-16 186 views
4

我知道十六进制数通常在C/C++语言中以0x作为前缀。 例如,0x5A表示十进制90。 但我看到一个使用单引号字符的示例代码,其编号为'\x'C++中0x和' x'有什么区别?

BYTE outputBuffer[index++] = '\x5A'; // instead of 0x5A 

'\x5A'完全一样0x5A意思?

如果是这样,为什么会出现十六进制十进制形式的另一种方式?

+0

http://stackoverflow.com/questions/2547349/what-does-x-mean-in-cc – pa1geek

+1

六角不限制为一个字节。 – chris

+0

非常好的回答:http://stackoverflow.com/a/14264498/1673391 –

回答

7

对于一个角色来说,两者都非常平等。

但只有一个可以与其他正常字符混合成一个字符串。 "ABC\x5A"

而且只有一个可以用来初始化一个大的整数类型:long long x = 0x1234567812345678LL;

+4

在C++中,'\ x5A'的类型是'char',而0x5A的类型是'int'。他们不平等。 –

+0

@ C.R .:的确,他们只有价值平等,而不是类型平等。但在问题的背景下,被分配到一个固定类型的变量,我们只关心由于转换范围的扩大或缩小而发生的价值和任何价值调整。 –

相关问题