当下面代码的第一个if语句求值为true时,奇怪的是第二个if语句的计算结果为true。更奇怪的是,如果我在第一个语句中注释掉cout
行,则第二个if语句不会评估为true(应该是这样)。
当cout
没有被注释掉并且第一个条件的计算结果为真时,我会得到cities[202].getNext()->getX()
的一些非常奇怪的值,它会在第二个if语句代码块中打印出来。
顺便说一句,这段代码只是执行一些单元测试,因此是硬编码值。在第一个if语句中,cities[202].getID()
应该== 202,以便if语句的计算结果为false。但是,我正在测试我的测试代码,因此我将cities[202].getID() != 202
更改为cities[202].getID() != 201
// test middle element of vect
if( cities[202].getID() != 201 /*should be 202, wrote 201 on purpose*/ || cities[202].getX() != 188 || cities[202].getY() != 41){
pass = 0;
// second conditional below fails (which is good) if I do not comment out this next line with cout
cout << "error with middle city x, y or id" << endl;
}
// middle element's next and prev should point to Default obj, with id=777, x=77, y=7
if( cities[202].getNext()->getX() != 77 || cities[202].getNext()->getID() != 777){
pass = 0;
cout << "error with middle city next" << endl;
cout << "cities[202].getNext->getX = " << cities[202].getNext()->getX() << endl;
}
出现这种情况的原因有何想法? cout
怎么可能导致这样的事情?