【问题标题】:Does comparing to numbers always require ASCII format?与数字进行比较是否总是需要 ASCII 格式?
【发布时间】:2014-03-31 23:15:06
【问题描述】:

我对 C 还是很陌生,因为我正在尝试更多地理解它。

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

是否有另一种方法可以将 char 数组的内容与数字(例如将数字设为局部变量除外)进行比较?

输入 = 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");
    }

提前致谢!

【问题讨论】:

  • 你可以说,如果 (test[0] == '1')
  • 啊该死的这么简单,我已经习惯了只使用双引号的Java...非常感谢!
  • 所以,输入是“1”,而不是“\1”。 C 无法知道您想要一个 char 文字而不是您提供的完全有效的数字。
  • 甚至 java 也有 char 字面量,使用与 C 相同的语法。

标签: c arrays numbers compare


【解决方案1】:

您正在将输入“扫描”为字符串。所以你最终得到了一个字符数组。
如果您输入数字“1”,您要求 scanf 做的是将其解释为字符串“1”,这就是为什么您的数组上有“1”的 ASCII 表示。

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

智力测验; scanf("%i", 测试); 如果(测试 == 1){ 放(“真”); }

顺便说一句,scanf 的使用被认为是it is not possible to prevent buffer overflows。然后在家庭作业之外,我认为它实际上并没有被使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-03
    • 2017-04-22
    • 1970-01-01
    • 2014-04-23
    • 2016-10-09
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    相关资源
    最近更新 更多