计算机眼中字母不应该是二进制的那些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码。同时,变量a
和b
没有进行初始化,这是由于C语言中的局部变量没有默认值。
解决方案:
%c
作为格式控制字符串来指示输入和输出的是字符数据:char a, b;
scanf("%c %c", &a, &b);
printf("%c, %c\n", a, b);
a
和b
,这样可以避免未定义的行为: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;
}
这样修改后的代码可以正确地输入和输出字符。
【相关推荐】