【问题标题】:What is the difference between 0x and '\x' in C++? [duplicate]C++ 中的 0x 和 '\x' 有什么区别? [复制]
【发布时间】:2014-02-16 05:31:01
【问题描述】:

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

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

'\x5A'0x5A的意思是不是完全一样?

如果是这样,为什么还有十六进制表示法的替代方式?

【问题讨论】:

标签: c++


【解决方案1】:

对于一个角色来说,两者是相当的。

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

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

【讨论】:

  • 在 C++ 中,'\x5A' 的类型为 char,而 0x5A 的类型为 int。它们不相等。
  • @C.R.:确实它们只有值相等,没有类型相等。但是在问题的上下文中,被分配给一个固定类型的变量,我们只关心值和由于扩大或缩小转换而发生的任何值调整。
  • @BenVoigt 对不起,这确实是错误的,我已经删除了我不正确的评论。感谢您指出。
猜你喜欢
  • 2021-12-31
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 1970-01-01
  • 2012-02-15
相关资源
最近更新 更多