我要用户输入两个变量。第一个是无符号整数a,第二个是无符号字符b。的读入a工作正常,但读入b后a为0。
我发现的指针a比的指针大1 b。我意识到,当b大于255时a不再为0。因此在我看来,要scanf读取b并覆盖多个字节a。
#include <stdio.h>
int main ()
{
unsigned int a;
unsigned char b;
printf("a: ");
scanf("%u", &a); /* 255 */
printf("b: ");
scanf("%hhu", &b); /* 17 */
printf("a: %u\n", a); /* a: 0 */
printf("b: %u\n", b); /* b: 17 */
printf("pointer a: %u\n", &a); /* pointer a: 6422316 */
printf("pointer b: %u\n", &b); /* …Run Code Online (Sandbox Code Playgroud)