一个非常简单的关于C语言问题

的答案是问号和D求详解一下子呀?!?!?
求详解一下
求详解一下
我自己算出来的是四和D

img

scanf("%d", &b) 这句话是有几个意思,注意地址覆盖了
一个是 b是个字符,但是转成int读入,那么以b开头的地址要占4个字节,这样会读入覆盖a的地址
二个是 在b读入后a应该是=0了,这个时候a第一次读入E的值应该被覆盖了
以下就是跟踪的过程:a的地址和b的地址是连在一起的并且b的地址在前面,如果b按照4个字节读入肯定会覆盖点a,最终a=0
(gdb) p &a
$1 = 0x7fffffffe2bf ""
(gdb) p &b
$2 = 0x7fffffffe2be ""
(gdb) p a
$3 = 0 '\000'
(gdb) p b
$4 = 34 '"'

实践检验,输入哪一个都是?,应该是没读进去吧
有用记得采纳呐

img

#include <stdio.h>
int main()
{
    char a,b;
    a=getchar();
    scanf("%d",&b);
    printf("%c",a);
    printf("%d %d %d %d\n",(int)a,'A','0',((int)a-'A'-'0'));
    a=a-'A'-'0';
    b=b*2;
    printf("%c,%c\n",a,b); 
}

img

img

把scanf里的%d改成%c,就可以输出4了