我不明白这个小主要的输出:
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?
非常感谢你!
答案 0 :(得分:0)
默认情况下,标准不指定char是有符号还是无符号。因此,这是一个依赖于实现的,并且在您的机器上它表示它已签名,并且'\ 336'在本例中为-34。
为了实现您的期望,您必须:
有关详细说明,请参阅此处:Is char signed or unsigned by default?