什么算作C11中的字符类型?

时间:2016-08-08 08:34:11

标签: c char

实际上属于到C11中的“字符类型” - 除了char当然还有吗?

更准确地说,字符类型的特殊例外(例如任何对象可以通过字符类型的左值表达式访问 - 参见C11标准中的§6.5/ 7),它们适用哪种具体类型?他们似乎uint8_t申请int8_tstdint.h,但这有保证吗?另一方面,gcc不会将char16_t中的uchar.h视为“字符类型”。

2 个答案:

答案 0 :(得分:8)

already:firstalready 1

$('#slotMachine #slotMachine2 div.combi').each(function(index, el) { if(!$(el).is('.already')) { console.log(index); } }); charsigned char类型或unsigned charuint8_t形式的任何类型可能是也可能不是角色的同义词类型。

1 (引自:ISO / IEC 9899:201x 6.2.5类型15)
char,signed char和unsigned char这三种类型统称为字符类型。

答案 1 :(得分:7)

charsigned charunsigned char是C11中的字符类型。这与C89相同。

int8_t(或uint8_t)视为字符类型有很多问题。

  1. 他们是可选的。
  2. CHAR_BIT > 8可能不存在。
  3. 如果实现使用 2的补码表示(这是最常见的),则定义为工作。但它们是其他表示形式,即C标准定义/允许的 1的补码符号幅度
  4. 由于它们存在,如果它们存在,请键入现有类型,您可以在实践中使用int8_tuint8_t作为字符类型 。但是标准并不保证任何东西,当你拥有真正的字符类型时,没有理由将它们当作这样对待。