相对较低级,但本质的c语言问题(我认为)

计算机眼中字母不应该是二进制的那些0101那些吗?
如果我在这个代码的基础上输入Hi,那么它他给出的那个a和b不应该是H和i对应的数字吗
但为什么说是a和B没有初始化,最终输出来的是A和B所在的那个数字
int a,b;
scanf("%d %d",&a,&b);
printf("a,b");

int a,b;
scanf("%d%d",&a,&b);
printf("%d,%d",a,b);
你要想输入Hi看到ascii应该是
scanf("%c%c",&a,&b);
printf("%d,%d",a,b);

scanf从输入缓存取数据。
%d从输入缓存取4个字节,
%c从输入缓存区1个字节。
如果格式符合变量类型对不上,则忽略输入了
输出也不对,printf("%d %d", a, b);

【以下回答由 GPT 生成】

问题分析:

问题的关键在于对于输入和输出的数据类型的选择上出现了错误。在代码中使用了%d作为格式控制字符串,这表示输入和输出的是整型数据。然而,我们想要输入和输出的是字符,而不是字符对应的ASCII码。同时,变量ab没有进行初始化,这是由于C语言中的局部变量没有默认值。

解决方案:

  1. 首先,我们需要使用%c作为格式控制字符串来指示输入和输出的是字符数据:
char a, b;
scanf("%c %c", &a, &b);
printf("%c, %c\n", a, b);
  1. 其次,我们应该初始化变量ab,这样可以避免未定义的行为:
char a = '\0', b = '\0';
scanf("%c %c", &a, &b);
printf("%c, %c\n", a, b);

完整代码:

#include <stdio.h>

int main(){
    char a = '\0', b = '\0';
    scanf("%c %c", &a, &b);
    printf("%c, %c\n", a, b);
    return 0;
}

这样修改后的代码可以正确地输入和输出字符。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^