在相同的std :: cout语句中增加两次

时间:2014-10-21 17:54:25

标签: c++

我不确定为什么在第二种情况下出局被逆转。 它可能很简单,但我认为我不能花钱 更多时间考虑这个问题。任何帮助/建议 赞赏。注意编译器是VS2012

double array[] = {10.0,20.0,30.0,40.0,50,60.0,70,80,90,100.0};
double *it = array;
int size = 10;
while(i<size) 
{               
    std::cout << "First : " <<  *it;
    it++;
    std::cout << "   Second : " << *it << std::endl; 
    it++;
    i++;        
}
//output
//First : 10.0  Second : 20.0
//First : 30.0  Second : 40.0
//...and so on

/*
while(i<size) 
{
std::cout << std::setprecision(15) << "First : " <<  *it++ << "   Second : " << *it++ <<  std::endl;
i++;
}
//Output is reversed in this case
//First : 20.0  Second : 10.0
//First : 40.0  Second : 30.0
//...and so on

*/

1 个答案:

答案 0 :(得分:1)

这是因为分配是以未定义的顺序进行的,很可能这就是它显示反转值的原因。 资料来源:http://en.cppreference.com/w/cpp/language/eval_order