我想为char字符分配一个char,但它是一个特殊的字符,如255或13.
我知道我可以为我的char赋予一个将被强制转换为char的文字int:{{ 1}}我也知道微软会让我使用hex code as a char literal:char a = 13;
我想知道gcc是否支持这种方法。
答案 0 :(得分:1)
写一些像
的东西char ch = 13;
主要可移植到平台上,其值13
与平台上的内容相同(所有系统都使用ASCII字符集,这确实是大多数系统今天)。
可能存在13
可能意味着其他东西的平台。但是,无论字符编码系统如何,使用'\r'
都应该是可移植的。
使用其他没有字符文字等值的值,不可移植。使用127以上的值甚至 less 可移植,因为那时你在ASCII表之外,进入扩展ASCII表,其中字母可以取决于语言环境系统的设置。例如,西欧和东欧语言设置很可能在128
到255
范围内有不同的字符。
如果你想使用一个字节,它只能包含一些二进制数据而不是字母,而不是使用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'
不是可以转义的特殊字符。那实际上是在调用八进制转义序列。