我正在编写一个简单的循环来确保我的输入是有效的二进制文件。例如:当用户输入任何大于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
答案 0 :(得分:6)
您需要使用if (int(binary[i]) != 48 && int(binary[i]) != 49)
- note&amp;&amp;而不是||。按照目前的情况,if(...)
实际上是if(true)
,因为binary[i]
不能同时是48和49。
答案 1 :(得分:1)
您使用的是错误的布尔运算符。如果你大声读出你的if语句,就会听起来像这样:
如果binary [i]不是'0'或者它不是'1',则执行if语句中的内容。
同时两件事怎么样?
使用&&
代替||
。