将char转换为unsigned int - C.

时间:2013-11-15 10:29:49

标签: c ascii

我不明白这个小主要的输出:

 int main(int argc, char **argv) {
     char c = '\336';
     unsigned int u = (unsigned int) c;
     printf("%d\n",u); /* I'm waiting for 222  but no ...*/
     exit(EXIT_SUCCESS);
}

为什么这个打印像我的变量是signed int?我怎样才能获得我想要的值222?

非常感谢你!

1 个答案:

答案 0 :(得分:0)

默认情况下,标准不指定char是有符号还是无符号。因此,这是一个依赖于实现的,并且在您的机器上它表示它已签名,并且'\ 336'在本例中为-34。

为了实现您的期望,您必须:

  1. 将c定义为unisgned char
  2. 在printf中使用%u说明符。
  3. 有关详细说明,请参阅此处:Is char signed or unsigned by default?