C#中的(true && false || true)是什么意思?

Ent*_*ity 4 c# boolean-logic

如果我有这个等式:

    var x = (true && false || true)
Run Code Online (Sandbox Code Playgroud)

这相当于:

    var x = ((true && false) || true)
Run Code Online (Sandbox Code Playgroud)

要么:

    var x = (true && (false || true))
Run Code Online (Sandbox Code Playgroud)

这背后的逻辑是什么?

Ali*_*tad 9

AND胜过OR.

所以它会

var x = ((true && false) || true)
Run Code Online (Sandbox Code Playgroud)

请参阅运算符优先级和关联性.

  • 这是一场比赛吗? (3认同)

Jas*_*ore 6

在布尔逻辑中,!在"和"(&&)之前评估"not"(),在"或"(||)之前评估"and" .通过使用double(&&)和double(||),这些运算符将短路,这不会影响逻辑结果,但如果需要,它会导致右侧的术语无法进行评估.

从而

var x = (true && false || true)评估false|| true评估结果true

var x = ((true && false) || true)评估false || true评估结果true

var x = (true && (false || true))评估true && true评估结果true

  • 我认为(true && false || true)的计算结果为false || 如果&&具有优先权,则为true,因此它等效于((true && false)|| true).无论如何最终所有这一切都将是真的. (3认同)