【问题标题】:Binary Numbers. Error When Checking to be sure binary input is binary二进制数。检查以确保二进制输入为二进制时出错
【发布时间】:2011-04-14 00:10:46
【问题描述】:

我正在编写一个简单的循环来确保我的输入是有效的二进制文件。例如:当用户输入任何大于 1 的数字时,我想抛出错误。我知道我需要检查 ASCII 数字。这里发生了什么?当我输入二进制时,我不应该得到错误。有什么想法吗?

for (int i=0;i<size;i++)
{
    printf("%i is string sub %i\n",int(binary[i]),i);
    if (int(binary[i]) != 48 || int(binary[i]) != 49)
    {
        printf("ERROR NOT A BINARY NUMBER\n");
        exit(0);
    }
}

输入:

0101

输出:

48 is string sub 0
ERROR NOT A BINARY NUMBER

【问题讨论】:

  • 没有binary[]的定义无法回答这个问题。

标签: c++ string binary ascii


【解决方案1】:

您需要使用if (int(binary[i]) != 48 &amp;&amp; int(binary[i]) != 49) - 注意&& 而不是||。就目前而言,if(...) 实际上是 if(true),因为 binary[i] 不能同时是 48 和 49。

【讨论】:

  • np - 很高兴能提供帮助。
【解决方案2】:

您使用了错误的布尔运算符。如果你大声朗读你的 if 语句,听起来是这样的:

如果 binary[i] 不是 '0' 或如果不是 '1',则执行 if 语句中的内容。

怎么可能同时是两件事呢?

使用&amp;&amp; 代替||

【讨论】:

    猜你喜欢
    • 2022-01-13
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多