我认为并不是越界的问题。
这个结论很容易否定,理由是:你可以输入*,在输入一次&,保证都是0。
我认为问题是:虽然你没有给int变量赋初值,但默认给你赋了0的初值。输入的时候根本没有读取到有效的int值,因此按照0直接给你输出了。
给你拓展一下~ 你可以把代码写成这样试试:
#include <stdio.h>
int main () {
char a;
scanf("%c", &a);
printf("%d\n", a);
printf("%d%d%d\n", a, a, a);
printf("%d%d%d%d%d\n", a, a, a, a, a);
return 0;
}
这样可以输出对应char的int值。
如果我的回答对你有帮助,还望采纳!有问题可以评论区交流讨论~
我认为的问题:char类型存的是一个字符,如‘d' 'u' '%' ,int类型存的是一个数,当你输入int类型的c时,你可以输入*,但它是int类型,输入无效,所以c会默认为0。(跨越了变量类型)