使用char和scanf“%hhu”时输入值无效

所以这就是代码

void main() { unsigned char n,t; scanf("%hhu %hhu",&n,&t); printf("%hhu %hhu",n,t); } 

问题是当我分别输入5和1时,输出为0和1. 0表示n ,1表示t 。 但是,当我将类型从char更改为int / unsigned时,输出是正确的:5和1。

问题是为什么用char输入(数字)输入会给出无效值?

int main(void)

 scanf("%hhu %hhu",&n,&t); 

这里———- ^ —— ^ unsigned char *是预期的

printf("%hhu %hhu",n,t);

所以改变

 char n,t; 

unsigned char n,t;

除此之外

 int main(void) 

至少,您还可以通过包含适当的标题来添加必要的原型:

 #include