我想用 char 文字分配一个 char,但它是一个特殊字符,比如 255 或 13。
我知道我可以为我的 char 分配一个文字 int,它将被转换为 char:char a = 13;
我也知道微软会让我使用十六进制代码作为字符文字:char a = '\xd'
我想知道是否有 gcc 也支持的方法。
我想用 char 文字分配一个 char,但它是一个特殊字符,比如 255 或 13。
我知道我可以为我的 char 分配一个文字 int,它将被转换为 char:char a = 13;
我也知道微软会让我使用十六进制代码作为字符文字:char a = '\xd'
我想知道是否有 gcc 也支持的方法。
写类似的东西
char ch = 13;
主要是可移植的,平台上的值13
与您的平台上的值相同(这是所有使用 ASCII 字符集的系统,这确实是当今的大多数系统)。
可能有一些平台13
可能意味着其他东西。但是,'\r'
无论字符编码系统如何,使用代替都应该始终是可移植的。
使用没有字符文字等价物的其他值是不可移植的。并且使用高于 127 的值更不便携,因为那时您不在 ASCII 表之外,进入扩展的 ASCII 表,其中字母可能取决于系统的区域设置。例如,西欧和东欧语言设置很可能在128
to255
范围内具有不同的字符。
如果您想使用一个只包含一些二进制数据而不是字母的字节char
,而不是使用您可能想要使用 eg uint8_t
,告诉您的代码的其他读者您不是将变量用于字母而是用于二进制数据.
十六进制转义序列并非特定于 Microsoft。它是 C/C++ 的一部分: http: //en.cppreference.com/w/cpp/language/escape
这意味着要将十六进制数字分配给 a char
,这是跨平台代码:
char a = '\xD';
该问题已经演示了将十进制数分配给 a char
:
char a = 13;
也可以分配八进制数,只需使用转义开关:
char a = '\023';
顺便说一句,'\0'
在 C/C++ 中表示空字符(与平台无关)很常见。'\0'
不是可以转义的特殊字符。这实际上是调用八进制转义序列。