微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

链接逻辑运算符

如何解决链接逻辑运算符

我在链接逻辑运算符时遇到了一些问题。我确定我搞砸了什么,但我没有看到。

我尝试了各种组合(例如在每个“不等于”操作周围添加括号等):

if (a != b && (a != EOF || b != EOF)) {
    /* Do stuff */
}

但没有任何效果ab 是从带有 fgetc文件中读取的位,我可以提供更多代码。但由于这是关于链接逻辑运算符,我认为这就足够了。

如果不明显,我希望 if 条件在 ab 不同但 not 当其中之一等于 EOF 时执行。 >

解决方法

将你所说的翻译成代码:

// I want the if condition execute:
// if    a and b are different    but  not when one of them equals EOF
   if (  a != b                   &&   !   (a == EOF || b == EOF) )

然后应用 DeMorgan 规则,将 NOT 移动到内部并将 OR 切换为 AND:

   if ( a != b  &&  a != EOF && b != EOF )
,

为了扩展 dbush 在评论中所说的内容,如果 ab 不同,并且 a 不是 EOF,并且 {{1} } 不是EOF。这在代码中最简单地表示为

b

(请记住,if( a != b && a != EOF && b != EOF)... 是一个负值,不能存储在 EOF 变量中。)

,

当您在编写条件时遇到问题时,首先尝试编写将绕过 if 语句的子语句的条件。

对于您的 if 语句,错误条件看起来像

a == b || a == EOF || b == EOF

然后使用它的否定

if ( !( a == b || a == EOF || b == EOF ) )

现在可以像这样重写

if ( !( a == b ) && !( a == EOF ) && !( b == EOF ) )

反过来会像

if ( a != b && a != EOF && b != EOF )
,

试试 ( a!=b && a != EOF || a!=b && b!= EOF )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?