小编Kan*_*iee的帖子

scanf正在覆盖第二个变量

我要用户输入两个变量。第一个是无符号整数a,第二个是无符号字符b。的读入a工作正常,但读入ba为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)

c scanf

4
推荐指数
2
解决办法
147
查看次数

标签 统计

c ×1

scanf ×1