这里为什么不能用int定义?

img

img


这里用char就可以成功运行,但用int的时候输入一个字符,它出来的是0。想问一下是因为char和int的范围不同吗?谢谢!

我认为并不是越界的问题。
这个结论很容易否定,理由是:你可以输入*,在输入一次&,保证都是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。(跨越了变量类型)