有没有办法优化这个陈述?

Cra*_*mer 1 c optimization

我有两个char的,s1并且s2,有一个说法

if ((s1 && !s2) || (!s1 && s2)) 
Run Code Online (Sandbox Code Playgroud)

但我觉得这是多余的,因为计算涉及两者s1!s1单独看,同样的s2!s2.因为,通过查看s1s2,您已经拥有了基础!s1和信息!s2.有没有办法压缩这个陈述?

use*_*109 6

该语句是逻辑独占的,或者没有内置运算符.在某些限制下,您可以将其转换为按位 - 或^- 但更常见的是它可以写​​为

if ( !s1 != !s2 )
Run Code Online (Sandbox Code Playgroud)

逻辑not运算符!将0转换为逻辑true值,并将任何其他值转换为逻辑false值.然后可以用结果测试结果!=.


小智 5

我相信使用条件运算 ?:运算符最容易阅读.

if (s1? !s2: s2) { 
}
Run Code Online (Sandbox Code Playgroud)