我根本无法理解这个简单的问题。
我有一个布尔值,我将其分配给测试的输出:
// these are passed in to the function and will vary
bool inReview = true;
char status = 'V';
bool test = (inReview && status != 'M') || !inReview;
评估为:
bool test = (true && true) || !true;
这应该是真的 - 但调试器显示“test”的值是假的。
当我尝试这个时:
bool inReview = true;
char status = 'V';
bool test = false;
if ((inReivew && status != 'M') || !inReview)
{
test = true;
}
它进入 if 并且调试器显示“test”的值为 true。
如果我这样做,现在还有一些非常奇怪的东西:
bool test = (inReview && status != 'M') || !inReview;
bool test2 = (inReview && status != 'M') || !inReview;
使用调试器进行单步调试 - 起初 test 是假的,test2 立即变为真,但是当我检查 test 时,它现在是真的!?
另外,如果我尝试:
bool test = (inReview && status != 'M') || !inReview;
if (test)
{
string s = "WTF?";
}
单步执行 - 首先测试是假的,然后它确实进入了 if 并且值现在是真的!?