C++ 在同一std::cout语句中递增两次
我不知道为什么在第二种情况下输出是相反的。 这可能很简单,但我不认为我可以花钱 有更多的时间考虑这个问题。任何帮助/建议都可以 谢谢。注意:编译器是VS2012C++ 在同一std::cout语句中递增两次,c++,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 : " &l
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
*/
double array[]={10.0,20.0,30.0,40.0,50,60.0,70,80,90100.0};
double*it=数组;
int size=10;
虽然(i发生这种情况是因为赋值是按未定义的顺序进行的,但很可能这就是它显示反向值的原因。
来源:这就解释了。我本能地认为它是从左到右的。谢谢,实际上,单个std::cout
中的求值顺序是未定义的(换句话说,+
发生的顺序)@itachi:each是否有其他方法将其放在一行中?@itachi您可以使用索引而不是指针,因此可能您注释掉的代码是未定义的行为。可能与@crashmstr重复:未注释的部分也是未定义的行为,读取时间远远超过数组的末尾。@MooingDuck true,还有其他问题s、 但我把重点放在了他们关于“排序”的具体问题上,其他问题也包括了这一点。