与数字比较是否总是需要ASCII格式?

与数字比较是否总是需要ASCII格式?,c,arrays,numbers,compare,C,Arrays,Numbers,Compare,我对C还是一个新手,因为我正在尝试更多地理解它 今天,我将我的字符数组中的内容片段与数字进行比较(见下面的示例),除非我使用它们各自的ASCII码,否则它似乎不起作用,所以我的问题是: 是否有其他方法将字符数组的内容与数字进行比较(将数字作为局部变量除外) 输入=1 char test [10]; scanf("%s", test); if (test[0] == 1) { puts("True"); } 而这一个确实有效 char test [10]; scanf("

我对C还是一个新手,因为我正在尝试更多地理解它

今天,我将我的字符数组中的内容片段与数字进行比较(见下面的示例),除非我使用它们各自的ASCII码,否则它似乎不起作用,所以我的问题是:

是否有其他方法将字符数组的内容与数字进行比较(将数字作为局部变量除外)

输入=1

char test [10];
scanf("%s", test);
if (test[0] == 1) {
    puts("True");
}
而这一个确实有效

    char test [10];
    scanf("%s", test);
    if (test[0] == 49) {
        puts("True");
    }
提前谢谢

您正在以字符串形式“扫描”输入。因此,您将得到一个字符数组。
如果输入数字“1”,则要求scanf将其解释为字符串“1”,这就是为什么在数组中使用ASCII表示法“1”

如果希望scanf将输入解释为整数,请尝试:

int test; scanf("%i", test); if (test == 1) { puts("True"); } 智力测验; 扫描频率(“%i”,测试); 如果(测试==1){ 认沽(“真”); }
顺便说一句,scanf的使用被认为是不可取的。然后,在家庭作业之外,我认为它实际上没有被使用。

你可以说,如果(测试[0]=“1”)啊,他妈的这么简单,我习惯了Java,我只使用双引号。。。谢谢!因此,输入是“1”,而不是“\1”。C无法知道您想要的是字符文字,而不是您提供的完全有效的数字。即使是java也有字符文字,使用与C相同的语法。