特殊字符文字

时间:2013-10-23 18:02:43

标签: c gcc char literals

我想为char字符分配一个char,但它是一个特殊的字符,如255或13.
我知道我可以为我的char赋予一个将被强制转换为char的文字int:{{ 1}}我也知道微软会让我使用hex code as a char literalchar a = 13;

我想知道gcc是否支持这种方法。

2 个答案:

答案 0 :(得分:1)

写一些像

的东西
char ch = 13;

主要可移植到平台上,其值13与平台上的内容相同(所有系统都使用ASCII字符集,这确实是大多数系统今天)。

可能存在13可能意味着其他东西的平台。但是,无论字符编码系统如何,使用'\r'都应该是可移植的。

使用其他没有字符文字等值的值,可移植。使用127以上的值甚至 less 可移植,因为那时你在ASCII表之外,进入扩展ASCII表,其中字母可以取决于语言环境系统的设置。例如,西欧和东欧语言设置很可能在128255范围内有不同的字符。

如果你想使用一个字节,它只能包含一些二进制数据而不是字母,而不是使用char你可能想要使用例如uint8_t,告诉其他读者您的代码,您没有使用字母变量,而是使用二进制数据。

答案 1 :(得分:0)

十六进制转义序列特定于Microsoft。它是C / C ++的一部分:http://en.cppreference.com/w/cpp/language/escape

这意味着要将一个十六进制数分配给char,这个跨平台代码:

char a = '\xD';

问题已经证明为char指定了十进制数:

char a = 13;

也可以分配八进制数,只有转义开关:

char a = '\023';

顺便说一句,'\0'在C / C ++中很常见,表示空字符(独立于平台)。 '\0'不是可以转义的特殊字符。那实际上是在调用八进制转义序列。