【问题标题】:char comparison always false c字符比较总是假 c
【发布时间】:2013-11-05 03:16:27
【问题描述】:

我正在尝试做一个简单的 do while 循环,其中除 'y' 或 'n' 之外的任何字母都无效并且循环重复。有谁知道为什么这个循环总是评估为假?即使输入了有效字符?

char user_response[2];

do {
    printf("\nDo you want to process another range (y or n): ");
    scanf("%1s", user_response);
    user_response[0] = tolower(user_response[0]);
}
while (user_response[0] != 'y' || user_response[0] != 'n');

return user_response[0];

【问题讨论】:

  • 如果响应为'y',则不等于'n',反之亦然。因此,您的一个或两个表达式将始终为真。
  • 您的循环测试一个虚构的字符,它同时是“y”和“n”。它不会接受任何不是'y'的东西,它不会接受任何不是'n'的东西。

标签: c char do-while


【解决方案1】:

你应该改变 ||到&&。

【讨论】:

    【解决方案2】:

    您想使用“&&”(和)而不是“||” (或)。

    您在这里有两个测试:“响应不等于 y”、“响应不等于 n”。由于响应不能同时为“y”和“n”,因此至少有一个测试将始终为真,并且通过使用“或”,您的 while 测试将始终评估为真。

    【讨论】:

    • 这更深入。但尼姆首先回答。不过感谢您的解释:)
    猜你喜欢
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    相关资源
    最近更新 更多